Zugriffsverletzung wenn ich Programm per DblClick auf Datei starte
-
Hallo,
ich habe mir einen Dateityp registriert, bei dem bei DblClick mein Programm gestartet wird!
Schön und gut, das hat auch funktioniert, allerdings bekomme ich zugriffsverletzung:
if(ParamStr(1).Pos(".vnf")>0 || ParamStr(1).Pos(".VNF")>0) //nur .vnf - Dateien laden { Application->ProcessMessages(); if(frmSplash) frmSplash->Label1->Caption = "Loading external file"; Application->ProcessMessages(); Form1->Show(); //ShowMessage(ParamStr(1)); Form16 = new TForm16(Application); Form16->RichEdit1->Lines->LoadFromFile(ParamStr(1)); Form16->RichEdit1->ReadOnly = true; Form16->MainMenu1->Items->Items[0]->Enabled=false; Form16->MainMenu1->Items->Items[1]->Enabled=false; Form16->MainMenu1->Items->Items[2]->Enabled=false; Form16->Caption = "Notizen für " + String(ExtractFileName(ParamStr(1))); Form16->Show(); }so,
Form16 gehört mit zum Programm, wurde mit formulardesigner hinzugefügt!
frmSplash ist ein Splashscreen (mögliche Fehlerquelle da dieser im FormCreate-Event des Form1 benutzt wird)CodeGuard-Bericht:
Error 00001. 0x100600 (Thread 0x0DA8): Access in invalid memory: Attempt to access 4 byte(s) at 0x00000000+784. Call Tree: 0x0040B652(=Main.exe:0x01:00A652) 0x0051F715(=Main.exe:0x01:11E715) 0x00534434(=Main.exe:0x01:133434) 0x005340AF(=Main.exe:0x01:1330AF) 0x004C880A(=Main.exe:0x01:0C780A) 0x77D18709(=USER32.DLL:0x01:007709)der kam einmal, und der:
Fehler 00001. 0x300010 (Thread 0x130C): Ressourcenleck: Objekt (0xDD5F84) war nie Gelöscht Objekt (0x00DD5F84) [Größe: 72 Byte] war erstellt mit new Aufrufhierarchie: 0x00403ECF(=Main.exe:0x01:002ECF) D:\VDA_REMAKE\Funktionen_in_DLL2\main_code.cpp#36 0x00440E60(=Main.exe:0x01:03FE60) 0x00473924(=Main.exe:0x01:072924) 0x0047359F(=Main.exe:0x01:07259F) 0x00419BFE(=Main.exe:0x01:018BFE) 0x77D18709(=USER32.DLL:0x01:007709)Zeile 36 wäre das vom Editor erzeugte
TForm1 *Form1;kann mir jmd helfen?
-
Setze doch mal einen Breakpoint in den OnCreate-Event deiner Form. Beim Menü Start/Parameter vom Builder kannst du die zu öffnende Datei mit eintragen, damit du den Test aus der IDE heraus machen kannst. Existiert denn frmSplash überhaupt? Ist der Pointer defaultmäßig auf 0 gesetzt?
-
kannst du mir bitte erklären wie ich das mit dem parameter mache und wie ich dann die sache aus der IDE heraus starte?
Ja frmSplash existiert!
-
Im BCB unter Start->Parameter kannst Du die zu übergebenden Parameter angeben.
-
Was in deinem Fall der Name (mit kompletten Pfad) der Datei ist auf die du doppelt klicken willst. Dann einfach dein Programm vom Builder aus starten.