Einzelnen Beitrag anzeigen

RGH

Registriert seit: 30. Sep 2006
Ort: Nußloch
4 Beiträge
 
Turbo Delphi für Win32
 
#1

GetFileOpenName funktioniert nicht unter TurboDelphi

  Alt 30. Sep 2006, 14:30
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;
  Mit Zitat antworten Zitat