Hallo!
Ich benutze folgenden Code:
-----Alle Dateien in einem Verzeichnis und dessen Unterverzeichnisse suchen-----
Delphi-Quellcode:
procedure GetAllFiles(mask: string);
var Search: TSearchrec;
verz: string;
such: string;
begin
such := ExtractFileName(mask);
verz := ExtractFilepath(mask);
if verz[length(verz)] <> '\' then verz := verz + '\';
{ alle Dateien suchen }
if FindFirst(mask, $23, Search) = 0 then
repeat
Form1.listbox1.items.add(verz + Search.Name);
until FindNext(Search) <> 0;
{ Unterverzeichnisse durchsuchen }
if FindFirst(verz + '*.*', fadirectory, Search) = 0 then
begin;
repeat
if ((search.attr and fadirectory) = fadirectory) and (search.name[1] <> '.') then
GetAllFiles(verz + Search.Name + '\' + such);
until FindNext(Search) <> 0;
end;
Findclose(Search);
end;
-----Ein Fenster öffnen, in dem man ein Verzeichnis auswählen kann-----
Delphi-Quellcode:
function OpenFolder(root: Integer; Caption: string): string;
var
bi: TBrowseInfo;
lpBuffer: PChar;
pidlPrograms, pidlBrowse: PItemIDList;
begin
if (not SUCCEEDED(SHGetSpecialFolderLocation(GetActiveWindow, root,
pidlPrograms))) then
exit;
lpBuffer := StrAlloc(MAX_PATH);
bi.hwndOwner := GetActiveWindow;
bi.pidlRoot := pidlPrograms;
bi.pszDisplayName := lpBuffer;
bi.lpszTitle := PChar(Caption);
bi.ulFlags := BIF_RETURNONLYFSDIRS;
bi.lpfn := nil;
bi.lParam := 0;
pidlBrowse := SHBrowseForFolder(bi);
if (pidlBrowse <> nil) then
if SHGetPathFromIDList(pidlBrowse, lpBuffer) then
Result := lpBuffer;
StrDispose(lpBuffer);
end;
Beim Klick auf diesen Button alle gefundenen Dateien in eine CheckListBox einfügen.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
GetAllFiles(OpenFolder(CSIDL_DRIVES,'Verzeichnisse auswählen')+'\*.mp3');
SendMessage(ListBox1.Handle,LB_DIR,DDL_ARCHIVE or DDL_HIDDEN or DDL_READONLY or DDL_READWRITE or DDL_SYSTEM,lParam(PChar(pfad+'\*.*')));
end;
Nun habe ich folgendes Problem:
Nach dem Ausführen werden in der CheckListBox alle gefundenen Dateien angezeigt, allerdings ohne den pfad. Nur die Datei namen. Also aus 'D:\Eigene Dateien\Musik\Track01.mp3' wird 'Track01.mp3'.
Wie muss ich den Code ändern, damit der vollständige Pfad angezeigt wird? Vielleicht sollte ich dazusagen, dass ich die Codes aus diesem Forum habe, sie also nicht von mir geschrieben wurden. Ich vermute, das das Problem bei dem 'SendMessage' in Button1Click liegt.
Gruß, dopeline