Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Problem beim Ordnerwechsel mit dem FTP Client (https://www.delphipraxis.net/27096-problem-beim-ordnerwechsel-mit-dem-ftp-client.html)

TheGame1492 4. Aug 2004 08:28


Problem beim Ordnerwechsel mit dem FTP Client
 
also ich hab folgendes (billig) problem

ich will mit meinem ftp client in verschiedene ordner wechseln, der erste ordner wechsel klappt problemlos, aber wenn ich denn in den unterordner rein will, kommt folgende meldung:

Listenindex überschreitet das Maximum



hier der code:

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);

      end;
    end;
end;

vllt kann mir einer helfen :roll:

rantanplan99 4. Aug 2004 08:47

Re: Problem beim Ordnerwechsel mit dem FTP Client
 
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

TheGame1492 4. Aug 2004 10:15

Re: Problem beim Ordnerwechsel mit dem FTP Client
 
ah geil thx :)

und wie würde das funktionieren, wenn ich in die ordner kommen will durch einen doppelklick mit der maus?


weil das mit dem extra button ist ja etwas doof ;)

rantanplan99 4. Aug 2004 10:22

Re: Problem beim Ordnerwechsel mit dem FTP Client
 
TListBox hat ein Event onDblClick. siehe auch in der Delphi Online-Hilfe.

Benedikt 4. Aug 2004 10:42

Re: Problem beim Ordnerwechsel mit dem FTP Client
 
Hi,

warum überhaupt der Aufwand mit der Schleife?
In deinem Falle ist ja eh nur ein Item selektiert bzw. kann du auch nur in einen Ordner reinwechseln, so dass das abfragen von ItemIndex wesentlich einfacher wäre:

Delphi-Quellcode:
//OnDblClick-Ereignis der Listbox
procedure TForm1.ListBox_FTPINHALTDblClick(Sender: TObject);
begin
   //Überprüfen ob ein Item ausgewählt ist
   if (ListBox_FTPINHALT.ItemIndex<>-1) then
   begin
      //Ist das ausgewählte Item ein Ordner (benötigt: uses IdFTPList)
      if (IdFTP1.DirectoryListing.Items[ListBox_FTPINHALT.ItemIndex].ItemType=ditDirectory) then
      begin
         //Verzeichnis wechseln
         IdFTP1.ChangeDir(IdFTP1.DirectoryListing.Items[ListBox_FTPINHALT.ItemIndex].FileName);
         
         //Listbox leeren und füllen
         ListBox_FTPINHALT.Items.Clear;
         IdFTP1.List(ListBox_FTPINHALT.Items);
      end;
   end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:19 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz