Ich benutze folgende TOpenFileName-Struktur in meinem
nonVCL-Programm:
Code:
OFN.lStructSize := SizeOf(OpenFileName);
OFN.hWndOwner := Hnd;
OFN.hInstance := hInstance;
OFN.lpstrFilter := DataInput_Filter;
OFN.lpstrCustomFilter := nil;
OFN.nMaxCustFilter := 0;
OFN.nFilterIndex := 0;
OFN.nMaxFile := 256;
OFN.nMaxFileTitle := 256;
OFN.lpstrFile := @FileName; { markiert }
OFN.lpstrFileTitle := @FileTitle; { markiert }
OFN.lpstrInitialDir := 'C:\';
OFN.lpstrTitle := 'Quelldatei auswählen';
OFN.Flags := OFN_FILEMUSTEXIST or OFN_PATHMUSTEXIST or OFN_READONLY;
Das funktionniert ohne Probleme, solange das Programm läuft. Aber wenn ich es beende, bekomme ich eine
Access-Violation. Wenn ich oben markierte Annweisungen auskommentiere, triit dies nicht auf. Die Puffergröße müsste groß genug sein, denn die Funktion GetOpenFileName liefert ja True zurück. Aus dem
PSDK werd ich nicht so ganz schlau, ob oben genannte Felder eine Initialisierung brauchen. Wäre also ganz scönn, wenn mir jemand helfen könnte.[/code]
Nachtrag: Auch wenn man es sich wahrscheinlich denken kann, wollte ich doch noch sagen, dass der Fehler nur auftritt, wenn diese Struktur als Parameter einer GetOpenFileName-Funktion aufgerufen wird.
Und da der Fehler nach dem Senden der WM_DESTROY-Nachricht auftaucht, sag ich noch, dass bei WM_DESTROY lediglich steht: