Zugriffsverletzung bei Adresse: [...]



  • Bei mir läuft mein Prog einwadfrei aber ich hab eine "Testversion" einem
    Freund gesendet und der bekommt kurz nach dem Start folgende Fehlermeldung:

    Zugriffsverletzung bei Adresse 00524EE4 in Modul 'SuperMediaPlayerPro.exe'. Lesen von Adresse 7578500B.

    Wenn ich ihm folgende libs etc sende kommt ein anderer Fehler:
    cc3290mt.dll
    borlndmm.dll
    rtl120.bpl
    vcl120.bpl

    er hat sie aber auch in system32 drin, warum er sie das schon hat weiß ich nicht mehr.

    die einstellungen beim build auf Laufzeit Packages verwenden und andersrum hat keine Änderungen hervorgerufen, möglicherweise nur eine andere Adresse

    hab nur bei Release getestet Debug version nicht.

    Ich hab keine Ahnung worans liegt kurzzeitig hatte er auch die Adresse
    0000001B

    Ich kriegs ******
    Google gibt mir entweder keine Antwort oder 1000 Andere Adressen.
    Alles Mist ich steig wieder zu VC++ 2008 Express um



  • Hallo

    Ein Speicherzugriffsfehler hat normalerweise nichts mit fehlenden statischen dlls zu tun, da kommt eine andere Fehlermeldung. Die Ursache dürfe wohl eher an deinem Quellcode liegen.

    bis bald
    akari



  • Oh na toll
    das sind 3200 Zeilen schlecht formatierter Code ⚠ ⚠ ⚠
    Was mach ich denn jetzt ?
    Außerdem es kommt ja nur bei ihm vor !
    bei allen die Borland 2009 installed zu verfügung haben (ich und noch jemand den ich kenne) gehts.
    Was mach ich denn jetzt ?
    - MIND SUSPEND -
    kann ich irgendwo nachsehen, welcher Fehler (Adresse) was für Ursachen haben kann


  • Mod

    Hallo

    tritt der Fehler auch bei der Debugversion auf ?

    lass dir Meldungen ausgeben (ShowMessage)
    um den Fehler einzugrenzen

    Mfg
    Klaus



  • hmm das Problem ist meine Testvers... äh Testperson 😃 ist momentan nicht da
    und ich kann mit ihm nicht testen als wäre er ein roboter, aber wenn ich wieder
    kann, dann such ich.
    Debug teste ich demnächst.
    Ich weiß zumindest, das es nach dem "Laden" auftritt, ich habe eine extra Form die zu Anfang bestimmte sachen initialisiert.
    Und dann verschwindet + die Hauptform zeigt, ich seh mal was danach alles auto gemacht werden, und versuch etwas zu basteln, alles verdächtige umzuschreiben / auszubauen. Und wenn er morgen da ist werde ich ihm instruktionen geben 🙂



  • würde jemand netterweise sehen obs bei ihm funzt ?

    eine intallation der Anwendung ist zwinged notwendig + registrierung.
    Ich loads mal up



  • Zuerst die Keys:

    GELÖSCHT
    GELÖSCHT
    GELÖSCHT
    GELÖSCHT
    GELÖSCHT
    GELÖSCHT
    GELÖSCHT
    GELÖSCHT
    GELÖSCHT
    GELÖSCHT

    wie gesagt das ist eine unfertige beta Version.
    tragt einen der Keys in die "Register.reg"
    ein oder belasst es bei dem aktuellen (ist der 9. in der Liste).
    Und fügt es zur Registrierung hinzu.
    dann könnt ihr den Informationen, die nach der Installation kommen folgen.
    Passwort: "Cpp Forum" (ohne "")

    Ich hoffe bei euch sind die Fehler auch zu sehen sonst bringt mir das herzlich wenig.
    uninstalled: 6.9 MB
    installed: ca 34 MB

    SMP beta Setup.exe 	6.71 MB 	http://ul.to/nwz2go
    

    Fertig

    EDIT: ACHTUNG KEYS SIND UNGÜLTIG, ÄNDERE SIE IN KURZER ZEIT
    EDIT 2: Keys stimmen wieder
    EDIT 3: Aber nicht im install Packet, nun muss zwangsweise übertragen werden



  • Ich habs bei mir soeben getestet.

    Nach dem Ladeschirm erscheint mir ebenfalls die Meldung:
    Vor Registrierung:
    - Zugriffsverletzung bei Adresse 00524C6A in Modul 'SuperMediaPlayerPro.exe'. Lesen von Adresse 00000001
    Nach der Ausführung von Beta Registrieren.bat
    - Zugriffsverletzung bei Adresse 00524EE4 in Modul 'SuperMediaPlayerPro.exe'. Leden von Adresse 01967FD0

    Bei der Lizenzierung taucht ebenfalls ein Fehler auf:
    - Zugriffsverletzung bei Adresse D5AABED6. Lesen von Adresse D5AABED6

    Hier noch kurze Informationen zu meinem System:
    - Windows XP SP 3
    - C++Builder 2010 installiert
    - Visual Studio 2008 installiert



  • vielen Dank !
    Ich habe SP 3
    Windows XP Professional
    BCB 2009
    Visual Studio 2008 Express

    Ich werde die Fehler so gut es geht auswerten und terminieren



  • Der Fehler vor der Registrierung kann nur an den Zugriff auf die registry sein, auf einen Wert den es ja noch nicht gibt.

    Und es scheint so als käme immer noch ein Fehler bei einem Registry Zugriff, selbst wenn der Wert besteht, wie könnte ich folgenden Codeschnipsel ?
    (Langsam wirds Handfester 🙂 )

    char temp[99] = {""};
    	unsigned long size = sizeof(temp);
    	HKEY hKey;
    	RegOpenKey(HKEY_LOCAL_MACHINE, "Software\\MSP", &hKey);
    	int suc = RegQueryValueEx(hKey, "LICENSE", NULL, NULL, temp, &size);
    	if (suc == 2)
    	{
    	  license = 0;
    	  valid = 0;
    	}
    	if (suc == 0)
    	{
    	  valid = 2;
    	  key = "";
    	  int i = 0;
    	  for (;i < 98; i++)
    	  {
    		key += temp[i];
    	  }
    	  RegCloseKey(hKey);
    

    (formatierung noch im alten Stil, da es sich hier um ein Monatsprojekt handelt und der Teil zu den alten gehört)

    EDIT: Lade mir grade die Borland Runtime Data Base für Inno Setup runter, das könnte mögliche Fehler beheben, wenn sie mitinstalliert wird.

    EDIT 2: Die zweite Fehlermeldung kenn ich schon nur das "Lesen von Adresse" ist anders, aber das liegt wohl am unterschiedlich Computer. (CPU abschnitt)
    Ok das ist in der Tat GUT

    fragt sich nur was der heißt 😃



  • Tim06TR schrieb:

    EDIT: Lade mir grade die Borland Runtime Data Base für Inno Setup runter, das könnte mögliche Fehler beheben, wenn sie mitinstalliert wird.

    Mach lieber das Häkchen bei Projektoptionen/Linker/Dynamische RTL verwenden weg. Läuft dann überall ohne Extrawürste installieren zu müssen.



  • Bei WinAPI-Funktionen (wie z.B. RegOpenKey) mußt du immer den Rückgabewert prüfen!

    Warum verwendest du nicht die VCL-Klasse 'TRegistry'?. Dann würdest du wenigstens Exceptions kriegen anstatt Speicherzugriffsfehler.



  • In HKEY_LOCAL_MACHINE dürfen nur "admin" Accounts schreiben evtl. liegt es ja daran.



  • VCL-Klasse 'TRegistry'

    Klasse sowas hilft mir weiter !

    In HKEY_LOCAL_MACHINE dürfen nur "admin" Accounts schreiben

    Nein das ist überall der Fall !

    Eins ist mir noch aufgefallen, wenn ich die vcl120.bpl und die drei anderen in meinen Programmordner kompiere bekomme ich auch Acces Violation Fehler 😮 .

    Das Oberste verleitet mich jetzt auch dazu weiteres in VCL umzuschreiben, ich benutze dich so gern Standart Elemente oder Winapi :), ja das mach ich.

    Ich danke herzlich für die Ideen, den mir liegt sehr viel an diesem Projekt, und ich hab es anscheinend nicht oft genug getestet 🙂

    EDIT:

    Projektoptionen/Linker/Dynamische RTL

    Das wars was mir immer gefehlt hat ! Ich hab mich schon gewundert warum das nie gefunzt hat. Ich kannte es zwar, dass man was machen muss, damits überall läuft, aber das hab ich wohl vergessen



  • Folgender Code erreciht den Fehler "Subkey nicht gefunden" (mein fehler 😃 )

    {
    	int suc = 2;
    	std::string IFO;
    	TRegistry* reg = new TRegistry(KEY_READ);
    	reg->RootKey = HKEY_LOCAL_MACHINE;
    	if(!reg->KeyExists("Software\\MSP"))
    	{
    		MessageBox(NULL,"Key not found!","CRITICAL ERROR",MB_OK);
    	}
    	reg->Access = KEY_WRITE;
    
    	bool openResult = reg->OpenKey("Software\\MSP\\", false);
    	if (!openResult)
    	{
    		MessageBox(NULL,"\"MSP\" not found!","CRITICAL ERROR",MB_OK);
    		license = 0;
    		valid = 0;
    	}
    	else
    	{
    		if (reg->LoadKey("Software\\MSP","LICENSE"))
    		{
    			suc = 0;
    			reg->ReadString(IFO.c_str());
    		}
    		else
    		{
    			MessageBox(NULL,"Subkey not found","CRITICAL ERROR",MB_OK);
    			license = 0;
    			valid = 0;
    		}
    		// MessageBox(NULL,IFO.c_str(),"CRITICAL ERROR",MB_OK);
    	}
    

    Was mach den hier falsch, die Borland Hilfe gibt leider keine angaben zum Lesen nur zum Schreiben 😞



  • bool __fastcall LoadKey(System::UnicodeString Key, System::UnicodeString FileName);

    Creates a subkey under the root key and loads registry information from a file into the newly created subkey.

    Da wird also geschrieben, nicht gelesen. Und weil a) software\MSP offenbar schon existiert und/oder b) der Dateiname ungültig ist, schlägt LoadKey fehl.

    Zum Lesen dürfte eine der diversen Read...-Funktionen wohl besser geeignet sein.



  • Jansen schrieb:

    bool __fastcall LoadKey(System::UnicodeString Key, System::UnicodeString FileName);

    Creates a subkey under the root key and loads registry information from a file into the newly created subkey.

    Da wird also geschrieben, nicht gelesen. Und weil a) software\MSP offenbar schon existiert und/oder b) der Dateiname ungültig ist, schlägt LoadKey fehl.

    Zum Lesen dürfte eine der diversen Read...-Funktionen wohl besser geeignet sein.

    hmm ok leuchtet ein 🙂 Habs korigiert und es geht

    Ganz nebenbei ist das ganze Thema gelöst weil:

    Mach lieber das Häkchen bei Projektoptionen/Linker/Dynamische RTL verwenden weg. Läuft dann überall ohne Extrawürste installieren zu müssen.

    Das hat alle Probleme weggefegt. Nanyuki Ich danke !


Anmelden zum Antworten