Einzelnen Beitrag anzeigen

newuser01

Registriert seit: 31. Aug 2006
248 Beiträge
 
Delphi 7 Professional
 
#1

TStringList Fehler Listenindex überschreitet das Maximum 0

  Alt 4. Okt 2006, 17:29
Hallo

Ich habe folgendes Problem wenn ich mp3s in einer StringList schreibe und Sie dann auf ID3Tag Einträge überprüfe kommt ab und an mal der Fehler "ListenIndex überschreitet das Maximum (0)" Der Fehler tritt aber nur dann auf glaub ich zumindest, wenn die StringList "slMP3" zu viele Daten enthält. Lade ich zb: einen Ordner der ca. 4500 MP3s (einschließlich Unterordner) enthält klappt alles bestens. Versuch ich aber von einem Ordner zu laden der noch mehr mp3s (einschließlich Unterordner) enthält kommt der besagte Fehler. Andererseits wenn ich die for Schleife unten im Code ausklammer also nicht ausführen lasse sondern nur die StringList slMP3 mit MP3s befülle kommt der Fehler auch nicht egal vieviel MP3s sich im Ordner befinden. Der Fehler wird wohl in der Schleife stecken

Delphi-Quellcode:
//StringList slMP3 wird mit MP3s mit Pfadangabe gefüllt
 FindAllFiles(fMain.slMP3,fVerzeichnis.DirectoryListBox1.Directory+'\','*.mp3', true, true, false);

             
for i := 0 to fMain.slMP3.Count - 1 do
begin

//ID3v1Tag auslesen

if fMain.ID3v1Tag.ReadFromFile(fMain.slMP3.Strings[i]) then
begin
  with fMain.ID3v1Tag do
  begin
   fMain.slTmp1.Add(Artist);
   fMain.slTmp1.Add(Album);
   fMain.slTmp1.Add(Year);
   fMain.slTmp1.Add(Title);
  end;
end;

//ID3v2Tag auslesen

if fMain.ID3v2Tag.ReadFromFile(fMain.slMP3.Strings[i]) then
begin
  with fMain.ID3v2Tag do
  begin
   fMain.slTmp2.Add(Artist);
   fMain.slTmp2.Add(Album);
   fMain.slTmp2.Add(Year);
   fMain.slTmp2.Add(Title);
  end;
end;


if (fMain.slTmp1.Strings[0] <> '') and (fMain.slTmp1.Strings[3] <> '') then
begin
 sArtist := fMain.slTmp1.Strings[0];
 sTitle := fMain.slTmp1.Strings[3];
 fMain.lbMP3Ausgabe.Items.Add(IntToStr(i+1) + '.' + ' '+ sArtist +' - '+ sTitle);
end
   else
       begin
        //wenn nichts vorhanden ist weiter und slTmp2 überprüfen
        if (fMain.slTmp2.Strings[0] <> '') and (fMain.slTmp2.Strings[3] <> '') then
        begin
         sArtist := fMain.slTmp2.Strings[0];
         sTitle := fMain.slTmp2.Strings[3];
         fMain.lbMP3Ausgabe.Items.Add(IntToStr(i+1) + '.' + ' '+ sArtist +' - '+ sTitle);
        end
           else
               begin
                // wenn in slTmmp2 auch nichts enthalten ist dann nur Dateinamen eintragen
                sDateiname := ExtractFileName(fMain.slMP3.Strings[i]);
                fMain.lbMP3Ausgabe.Items.Add(IntToStr(i+1) + '.' + ' '+ ChangeFileExt(sDateiname,''));
        end;//if slTmp2
end;//if slTmp1

fMain.slTmp1.Clear;
fMain.slTmp2.Clear;
end;//for
Gruß: Holger

[Hobby-Programmierer]
  Mit Zitat antworten Zitat