Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Gauge Position ändern bei dem Upload einer Datei ? (https://www.delphipraxis.net/131982-gauge-position-aendern-bei-dem-upload-einer-datei.html)

thomas2009 3. Apr 2009 17:34


Gauge Position ändern bei dem Upload einer Datei ?
 
Hallo


wie könnte ich ein Gauge für mein Upload einer Datei verbinden,
damit ich wissen, ob die Datei schon erfolgreich hochgeladten wurde oder noch nicht ?
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  f: string;
begin
  self.IdFTP1.Host := 'ftp.myweb.de';
  self.IdFTP1.Username := 'user1';
self.IdFTP1.Password := 'passwort1';
  Label1.Caption := 'Connecting...';
  application.ProcessMessages;
  self.IdFTP1.Connect;
  f := 'C:\test.bmp';
  if IdFTP1.Connected then begin
      application.ProcessMessages;
      self.IdFTP1.ChangeDir('/');
     application.ProcessMessages;
     IdFTP1.Put(f, ExtractFileName(f));
     application.ProcessMessages;
  end;
end;

DeddyH 3. Apr 2009 17:40

Re: Gauge Position ändern bei dem Upload einer Datei ?
 
IdFTP.OnWorkBegin MaxValue des Gauges auf AWorkCountMax und IdFTP.OnWork Progress des Gauge auf AWorkCount setzen.

thomas2009 3. Apr 2009 18:01

Re: Gauge Position ändern bei dem Upload einer Datei ?
 
die Streifen in geht ganz schnell obwohl ich eine grosse datei uploade
dann arbeitet das Programm in Hintergrund ohne !

bevor ich mit einem Gauge anfange, habe ich mit einem Progressbar getestet
Delphi-Quellcode:
procedure TForm1.IdFTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode;
  const AWorkCountMax: Integer);
begin
  ProgressBar1.Max := AWorkCountMax;
//  ProgressBar1.Position := 0;
end;

procedure TForm1.IdFTP1WorkEnd(Sender: TObject; AWorkMode: TWorkMode);
begin
    ProgressBar1.Position := 0;
    label1.Caption:='OK';
end;
procedure TForm1.IdFTP1Work(Sender: TObject; AWorkMode: TWorkMode;
  const AWorkCount: Integer);
begin
ProgressBar1.Position :=AWorkCount;
end;
Die Datei wird erfolgreich hochgeladen ausser eine Fehlermeldung am Ende :
Eigenschaft Progressbar außerhalb des gültigen Bereichs

das 2. Problem
label1.Caption:='OK'; nur wenn er fertig ist mit upload, das wird aber sofort angezeigt, wenn ich auf das Button anklicke !

DeddyH 3. Apr 2009 18:07

Re: Gauge Position ändern bei dem Upload einer Datei ?
 
Und wenn Du die ProcessMessages-Aufrufe beim Button auskommentierst? IIRC benutzen die Indy-Komponenten Threads, daher wäre das ja doppelt gemoppelt.

thomas2009 3. Apr 2009 18:28

Re: Gauge Position ändern bei dem Upload einer Datei ?
 
das grosse Problem, warum wird das Upload in Hintergrund gearbeitet aber das Formular friert sich!
Ich kann damit nicht machen, nur wenn das Programm mit dem Upload fertig ist !

DeddyH 3. Apr 2009 18:32

Re: Gauge Position ändern bei dem Upload einer Datei ?
 
Dann pack mal eine IdAntiFreeze-Komponente dazu. Weiter kann ich Dir aber nicht helfen, da ich äußerst selten was mit Indy mache.

Daniel 3. Apr 2009 18:34

Re: Gauge Position ändern bei dem Upload einer Datei ?
 
@thomas: Oberste Regel: Ruhig bleiben. ;-) Du hast bereits mehrfach bewiesen, dass Du in der Lage bist, Deine Beiträge aussagekräftiger zu formulieren, wenn Du Dir ein wenig Mühe gibst.

thomas2009 4. Apr 2009 14:22

Re: Gauge Position ändern bei dem Upload einer Datei ?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Mit dem Komponent "IdAntifreeze" wird nun tatsächlich das Formular nicht gefroren
Das Problem nun ist das gauge geht sofort nach dem Klick auf 100% obwohl die Datei noch bei dem Hochladen sich befindet !
Woran liegt das vielleicht ?
Delphi-Quellcode:
procedure TForm1.IdFTP1Work(Sender: TObject; AWorkMode: TWorkMode;
  const AWorkCount: Integer);
begin

 //Gauge1.MaxValue := Response.ContentLength;
 Gauge1.Progress := AWorkCount;
 Gauge1.Update;

    Application.ProcessMessages;
end;

procedure TForm1.IdFTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode;
  const AWorkCountMax: Integer);
begin
Gauge1.MaxValue:=AWorkCountMax;
end;

procedure TForm1.BitBtn2Click(Sender: TObject);
begin
Gauge1.Visible:=true;

  IdFTP1.Host := 'ftp.xxxx.de';
  IdFTP1.Username := 'xxxx';
  IdFTP1.Password := 'xxxx';
  IdFTP1.Connect;
 // IdFTP1.ChangeDir('/');
  IdFTP1.put('C:\test.bmp','test.bmp',true);
  //IdFTP1.Quit;
  IdFTP1.Disconnect;
end;

Luckie 4. Apr 2009 16:41

Re: Gauge Position ändern bei dem Upload einer Datei ?
 
Dann setz doch einfach mal einen Breakpunkt in Zeile 6.

thomas2009 4. Apr 2009 17:03

Re: Gauge Position ändern bei dem Upload einer Datei ?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von Luckie
Dann setz doch einfach mal einen Breakpunkt in Zeile 6.

kein Unterschied
Das Gauge wird sofort mit 100% angezeigt

Luckie 4. Apr 2009 19:46

Re: Gauge Position ändern bei dem Upload einer Datei ?
 
Was heißt kein Unterschied? Hält er denn da an und was hat dann AWorkCount für einen Wert?

jfheins 4. Apr 2009 19:48

Re: Gauge Position ändern bei dem Upload einer Datei ?
 
Zitat:

Zitat von Luckie
Was heißt kein Unterschied? Hält er denn da an...?

Ich beantworte das mal: Kein Unterschied im Sinne von: Ein Breakpoint bei einem Kommentar ist sinnlos und hat auch keine Auswirkungen - er hält also auch nicht an :stupid:

Luckie 4. Apr 2009 19:56

Re: Gauge Position ändern bei dem Upload einer Datei ?
 
Also in Zeile sechs steht bei mir:
Delphi-Quellcode:
Gauge1.Progress := AWorkCount;

thomas2009 4. Apr 2009 22:22

Re: Gauge Position ändern bei dem Upload einer Datei ?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Wenn ich das Programm an diesem Punkt anhalte
Gauge1.Progress := AWorkCount;
und dann mit F8 stück für Stück laufen lasse
dann sehe ich was in Progessbar und in Gauge
Mit F8 wiederholt sich der Code in OnWork und die Brogressbar.Position geht auch
stück für Stück vorwehrtes !

Luckie 4. Apr 2009 22:28

Re: Gauge Position ändern bei dem Upload einer Datei ?
 
Wie groß ist denn die Datei?

thomas2009 4. Apr 2009 22:39

Re: Gauge Position ändern bei dem Upload einer Datei ?
 
Das Bild ist etwa 700 kb groß
das Programm benötigt etwa 20 Sekunden oder mehr um die Datei auf Server zu kopieren
Aber in Progressbar geht um eine Bruch Sekunde !

Die Muhkuh 5. Apr 2009 06:48

Re: Gauge Position ändern bei dem Upload einer Datei ?
 
Hi,

mach mal ein TIdAntiFreeze auf Dein Formular und wirf aus der Methode IdFTP1Work das Gauge1.Update und das Application.ProcessMessages heraus.

thomas2009 5. Apr 2009 11:10

Re: Gauge Position ändern bei dem Upload einer Datei ?
 
Zitat:

Zitat von Die Muhkuh
Hi,

mach mal ein TIdAntiFreeze auf Dein Formular und wirf aus der Methode IdFTP1Work das Gauge1.Update und das Application.ProcessMessages heraus.

Alle diese Punkte habe ich schon. siehe #8
TIdAntiFreeze ist auch auf dem Formular

Blackheart 5. Apr 2009 11:33

Re: Gauge Position ändern bei dem Upload einer Datei ?
 
Bitte lies dir doch deinen Post vor dem abschicken nochmal durch.
Fünf Fehler in zwölf Worten da muss man schon mehr raten als lesen. :wink:


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