Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Probleme bzw. Fehlermelung bei FindFirst (https://www.delphipraxis.net/14993-probleme-bzw-fehlermelung-bei-findfirst.html)

FatFranky 20. Jan 2004 10:42


Probleme bzw. Fehlermelung bei FindFirst
 
Moin Leute,
ich will aus einem lokalem verzeichnis per FTP auf einen server tranferieren.
Die datein .doc, .txt, .jpg sind alle lokal in einem verzeichnis.
Auf dem server wechsel ich mit changeDir das zielverzeichnis.

Wenn ich meine FindFirst routine 3x hintereinander aufrufe funktioniert alles.

Weil aber 3x das gleich blöd ist habe ich eine procedur geschrieben

Delphi-Quellcode:
procedure TFormFtp.pFind();
var
  SearchRec: TSearchRec;
  i: integer;
  s: string;
begin
  i := FindFirst((Form1.EditTempStore.Text) + LabelExtension.Caption, faAnyFile, SearchRec);
                         // LabelExtension.Caption = versch. Endung (doc, txt...)
  while i = 0 do begin
      ListBoxFtp.Items.Add(SearchRec.Name);
      i := FindNext(SearchRec);
    end;
    FindClose(SearchRec);
    begin
    for i := 0 to ListBoxFtp.Items.Count -1 do
      begin
        s := ListBoxFtp.Items[i];
        IdFTP.Put((Form1.EditTempStore.Text) + s, s);
        ListBoxFtp.Items[i] := '';
        ListBoxFtp.clear;
      end;
    end;
end;
Nun stelle ich meine verbindung zum server her, rufe pFind(); auf und übertrage eine *.doc datei
verzeichnis wechsel aufm server, aufruf pFind(); und übertrage eine *.txt datei

Bis hierher alles Super.

Nun, verzeichnis wechsel aufm server, aufruf pFind(); und übertrage eine *.jpg datei
funzt auch noch
ABER: wenn es mehrere *.jpg datein sind kommt folgener Fehler:
...eine Exception der klasse EStringListRrror aufgetrten
Listenindex überschreitet das maximum(1)

Wo ist mein Fehler?

Luckie 20. Jan 2004 10:50

Re: Probleme bzw. Fehlermelung bei FindFirst
 
Delphi-Quellcode:
    for i := 0 to ListBoxFtp.Items.Count -1 do
      begin
        s := ListBoxFtp.Items[i];
        IdFTP.Put((Form1.EditTempStore.Text) + s, s);
        ListBoxFtp.Items[i] := '';
        ListBoxFtp.clear;
      end;
Annahme 3 Items sind in der Listbox. Bei einer for-Schleife wird vor dem Schleifendurchlauf festglegt, wie oft sie durchlaufen wird. Hier also dreimal. Ok, was passiert jetzt? Er geht die Schleife zum ersten mal durch. Alles klar geht. Nur am Ende der Schleife leerst du die Listbox, so dass er beim zweiten und dritten mal auf nicht vorhandene Items der Listbox zugreifen will. Und das macht er natürlich nicht mit. Ergo, lösch den Inhalt der Listbox einfach nicht.

FatFranky 20. Jan 2004 11:16

Re: Probleme bzw. Fehlermelung bei FindFirst
 
Hi Luckie,

nee, is klar: :wall:

Trivialer Fehler, aber ich hab x- mal düberweg gesehn.

Danke


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:52 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