![]() |
Schleife anhalten
Hallo,
Ich arbeite gerade an einem Programm, welches Bilder auf einen Server per FTP(mit INDY-Komponenten) hochläd! Leider schaffe ich es nicht, eine "Abbruch"-Funktion einzubauen, weil dann immer eine Fehlermeldung kommt! Da das Programm egtl. nur ich selbst benutze, wollte ich es so lösen: Immer 3 Bilder hochladen Dann nach fragen ob weiter gemacht werden soll oder nicht Dann weiter machen oder nicht :? Hier der Code:
Delphi-Quellcode:
Es wird gefragt, ob der Upload fortgesetzt werden soll, dabei bedeutet 1=Ja 2=Nein 3=immer Ja(also alle einfach).
procedure upl;
var i,co:integer; begin i:=0; co:=0; uploadfrage:=1; //UPLFR: 1=Ja 2=Nein(=Abort) 3=Immer Ja for i:= 0 to Listbox1.Items.count - 1 do begin if co=3 then begin uploadfrage:=5; // uploadfrage <> 1 o. 3 => Stop! logform.Memo1.Lines.Add(timetostr(now)+': Performing abort request'); groupbox1.Show; case uploadfrage of 1: begin co:=0; uploadfrage:=1; end; 2: idftp1.Disconnect(); 3: begin co:=4; uploadfrage:=3; end; 4: idftp1.Disconnect(); end; //bilder werden nacheinander durchgegangen und dann hochgeladen... Logfile wird mit daten gefüttert if (uploadfrage=1) or (uploadfrage=3) then begin status_lbl.Caption:='Uploading '+inttostr(i+1)+' of '+inttostr(listbox1.Items.Count); logform.Memo1.Lines.Add('Uploading '+extractfilename(listbox1.Items[i])); idftp1.Put(listbox1.Items[i],ExtractFileName(listbox1.Items[i]),false); urlform.Memo1.Lines.Add(remoteurl+ExtractFileName(listbox1.Items[i])); logform.Memo1.Lines.Add(timetostr(now)+': Added URL:'+ remoteurl+ExtractFileName(listbox1.Items[i])); inc(co); end; end; end; Nur wenn er mir die Frage stellt läd er einfach weiter hoch ohne zu stoppen! Wo ist der Fehler? mfg Ford |
Re: Schleife anhalten
Ich würde die Schleife von der For in eine While-Schleife mit entsprechender Bedingung umbauen.
|
Re: Schleife anhalten
ich würde es so machen:
Delphi-Quellcode:
type
TForm1 = class(TForm) private fCancel: Boolean; [...] procedure TForm1.BtnCancelClick(Sender: TObject); begin fCancel := True; end; procedure TForm1.BtnUploadClick(Sender: TObject); var lCount : Integer; begin lCount := 0; fCancel := False; while (lCount < Listbox1.Items.Count) and not(fCancel) do begin Application.ProcessMessages(); //Datei auf FTP hochladen Application.ProcessMessages(); inc(lCount); end; end; |
Re: Schleife anhalten
Super Danke!
An die Möglichkeit habe ich noch gar nicht gedacht! mfg Ford! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:46 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz