Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Multiselect mit GetOpenFileName (https://www.delphipraxis.net/5733-multiselect-mit-getopenfilename.html)

flow 17. Jun 2003 08:44


Multiselect mit GetOpenFileName
 
Hallo,

hab ein Problem mit GetOpenFileName. Möchte in meinem Texteditor mehrere Files aufeinmal öffnen können. Das ist ja auch nicht das Problem, nur wenn ich mehrere selektiere und auf OPEN klicke gibt mir StrPas(ofn.lpstrFile) nur den Pfad zu den Files zurück, aber nicht welche ich ausgewählt habe! Ist ein Fehler in meinem Code?

Delphi-Quellcode:
function OpenDlgBox(sTitle, sFilter : String; iFilterIndex: Integer; hHandle : HWND) : String;
var
  ofn: TOpenFileName;
  szFile: array[0..MAX_PATH] of Char;
begin
  FillChar(ofn, SizeOf(TOpenFileName), 0);
  with ofn do
  begin
    lStructSize := SizeOf(TOpenFileName);
    hwndOwner := hHandle;
    lpstrFile := szFile;
    nMaxFile := SizeOf(szFile);
    lpstrTitle := PChar(sTitle);
    lpstrInitialDir := nil;
    StrPCopy(lpstrFile, Result);
    lpstrFilter := PChar(sFilter);
    nFilterIndex := iFilterIndex;
    Flags := 524804;
  end;
  if GetOpenFileName(ofn) then Begin
    Result := StrPas(ofn.lpstrFile);
  end;
end;
Danke,

FLOW

MathiasSimmack 17. Jun 2003 09:02

Das Problem ist, dass die einzelnen Angaben (Ordner- und Dateinamen) durch das Null-Zeichen voneinander getrennt sind. Du siehst daher nur den Ordnernamen, weil durch
Delphi-Quellcode:
StrPas(ofn.lpstrFile);
nur der Text bis zum ersten #0 berücksichtigt wird. Die Lösung steht in Luckies Support-Forum: Frage zum Tut "OpenFileDialog" bzw. im Hotfix vom 9. März.


Hot fix

Simmis Definition für ein vorgezogenes Update für Ungeduldige. Die ZIP-Datei enthält lediglich aktualisierte oder erweiterte Hilfedateien und/oder Beispielprogramme, die ohne Installation benutzt werden können.
Zu beziehen sind sie über die interne Updateseite in den Tutorials. :)

flow 17. Jun 2003 11:50

Danke für den Tip, hab ich übersehen.

Schon gelöst :D !

FLOW


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:50 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz