Halli Hallo!
Ich möchte in meinem Programm erreichen, dass mittels einer Prozedur alle Namen der Dateien eines Verzeichnisses ohne Dateinamenerweiterung in einer Listbox angezeigt werden. Um nun aber die Dateien an sich weiterzuverwenden, soll der volle Dateipfad jeder Datei parallel in ein TStrings-Objekt eingefügt werden.
Folgende Prozedur habe ich dafür gefertigt:
Delphi-Quellcode:
procedure ListeDir(Path: string; FileList: TStrings; ext:boolean);
var
SR: TSearchRec;
begin
if FindFirst(Path + '*.*', faAnyFile, sr) = 0 then
begin
repeat
if ((sr.Attr and faDirectory) <> faDirectory) and
(sr.Name <> '.') and
(sr.Name <> '..') then
begin
if MatchesMask(sr.Name,'*.avi') OR MatchesMask(sr.Name,'*.mpeg') OR MatchesMask(sr.Name,'*.mpg') then
begin
if ext then begin sr.name:= StringReplace(sr.name,'.avi','',[rfReplaceAll]);
sr.name:= StringReplace(sr.name,'.mpg','',[rfReplaceAll]);
sr.name:= StringReplace(sr.name,'.mpeg','',[rfReplaceAll]);
end;
FileList.Append(sr.Name);
end;
end;
until FindNext(sr) <> 0;
FindClose(sr);
end;
end;
Diese werden dann folgendermaßen aufgerufen (dateiliste:TStrings):
Delphi-Quellcode:
ListDir('c:\irgendwas',Listbox1.Items,true);
ListDir('c:\irgendwas',dateiliste,false);
Wenn ich dies so verwende, wird zwar alles einwandfrei compiliert, wird die Prozedur aber in der Laufzeit aufgerufen, brignt der Debuger mir eine Fehlermeldung (Typ C0000005) und mein Programm bleibt stehen.
Habt ihr 'ne Idee, wie ich das ganze effizienter machen kann, bzw.überhaupt erstmal zum Funktionieren bringen könnte?