Hallo,
folgende Funktion läuft unter Delphi 5 völlig problemlos mit allen Windowsversionen und zeigt den Dialog zu Dateiauswahl an. Unter TurboDelphi funktioniert es plötzlich nur noch unter Windows 2000/XP und nicht mehr unter Win 95/98. Da wird der Dialog einfach nicht angezeigt.
Zur Funktion: In Filter steht entweder ein einfacher Filter (etwa '*.pas') oder ein komplexer Filter, wobei anstelle der Nullbytes je ein '|' steht. (Im Programm wird der Filer per Tastatur eingegeben.) Die '|' werden also zunächst in #0 umgewandelt. Char255 = Array[0..255] of Char.
Ich bin für jeden Hinweis dankbar!
Gruß
Roland
Delphi-Quellcode:
function DoFileOpen(Window:Hwnd;Filter,Caption:PChar):Boolean;
Var FN, FI:Char255;
P :LongInt;
ES: String;
DIR: Char255;
filedlg : TOpenFileNameA;
Begin
StrCopy(FI,Filter);
If StrPos(FI,'|') <> NIL Then Begin
StrCat(FI,'|');
For P:=0 To StrLen(FI) Do If Fi[P] = '|' Then Fi[P] := #0;
StrCopy(FN,PChar(''));
End Else Begin
StrCopy(FN,Filter);
End;
GetDir(0,ES);
StrCopy(DIR,PChar(ES));
With filedlg do begin
lStructSize := sizeof(filedlg);
hwndOwner := Window;
hInstance := 0;
lpstrFilter := Fi;
lpstrCustomFilter := NIL;
nMaxCustFilter := 0;
nFilterindex := 1;
lpstrFile := FN;
nMaxFile := 255;
lpstrFileTitle := NIL;
nMaxFileTitle := 0;
lpstrInitialDir := DIR;
lpstrTitle := Caption;
nFileOffset := 0;
nFileExtension := 0;
lpstrDefExt := '*.*';
lCustData := 0;
Flags := OFN_HIDEREADONLY or OFN_PATHMUSTEXIST or
OFN_FILEMUSTEXIST or OFN_EXPLORER;
end;
DoFileOpen := GetOpenFileName(filedlg);
StrCopy(Filter, filedlg.lpstrFile);
End;