Delphi-Quellcode:
procedure TFTP_Inhalt.Button_GoInDirClick(Sender: TObject);
var
i: integer;
selectFolder: string;
begin
for i := 0 to ListBox_FTPINHALT.Items.Count - 1 do
begin
if ListBox_FTPINHALT.Selected[i] then
begin
selectFolder := IdFTP1.DirectoryListing.Items[i].Filename;
IdFTP1.ChangeDir(selectFolder);
FTP_Inhalt1:=TStringList.Create;
ListBox_FTPINHALT.items.Clear;
IdFTP1.List(FTP_Inhalt1);
ListBox_FTPINHALT.Items.Assign(FTP_Inhalt1);
exit; // HIER BITTE EIN EXIT; EINFÜGEN
end;
end;
end;
Also wenn du in das verzeichnis gewechselt bist, überschreibst du ja den Inhalt der ListBox_FTPINHALT, allerdings wird der alte Inhalt davon ja für die Schleife benötigt, und so kann es sein, dass wenn das vorherige Verzeichnis mehr Einträge enthält als dass in das du gewechselt bist, deine Schleife auf Einträge (der ListBox) zugreiffen will, die in deinem neuen Verzeichnis nicht mehr existieren --> Listenindex überschreitet das Maximum
Deshalb füge ein 'exit;' nach dem neuladen des Verzeichnis ein um deine for-Schleife zu verlassen, und es sollte dann klappen