Einzelnen Beitrag anzeigen

Benutzerbild von grebaldi
grebaldi

Registriert seit: 5. Jan 2006
10 Beiträge
 
#1

Debugger-Exception bei Einsatz von Stringlist

  Alt 11. Feb 2008, 18:14
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?
Und Gott sprach: "Es werde Licht!"
@Delphi

if god='Mach Licht!' then make_light;
  Mit Zitat antworten Zitat