AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi FTP Fortschritt > Progressbar
Thema durchsuchen
Ansicht
Themen-Optionen

FTP Fortschritt > Progressbar

Ein Thema von napsterxx · begonnen am 23. Mai 2007 · letzter Beitrag vom 24. Mai 2007
Antwort Antwort
napsterxx

Registriert seit: 18. Mär 2007
Ort: Borland
556 Beiträge
 
Delphi 7 Enterprise
 
#1

FTP Fortschritt > Progressbar

  Alt 23. Mai 2007, 12:38
Delphi-Quellcode:
procedure TMainForm.IdFTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode;
  const AWorkCountMax: Integer);
begin
  ProgressBar1.Max := AWorkCountMax;
  ProgressBar1.Position := 0;
end;

procedure TMainForm.IdFTP1Work(Sender: TObject; AWorkMode: TWorkMode;
  const AWorkCount: Integer);
Var
  S: String;
  TotalTime: TDateTime;
  H, M, Sec, MS: Word;
  DLTime: Double;
begin
  //Errechnen der Transfergeschwindigkeit:
  TotalTime := Now - STime;
  DecodeTime(TotalTime, H, M, Sec, MS);
  Sec := Sec + M * 60 + H * 3600;
  DLTime := Sec + MS / 1000;
  if DLTime > 0 then
    AverageSpeed := (AWorkCount / 1024) / DLTime;
  S := FormatFloat('0.00 KB/s', AverageSpeed);
  case AWorkMode of
    wmRead: StatusBar1.Panels[1].Text := 'Download speed ' + S;
    wmWrite: StatusBar1.Panels[1].Text := 'Uploade speed ' + S;
  end;

  //Aktualisieren der Fortschrittsanzeige:
  ProgressBar1.Position := AWorkCount;
end;
@Quelle: http://www.dsdt.info/tutorials/indy/?page=4

Laut diesem Code soll man sich den Fortschritt des Down-/ Uploades anzeigenlassen können sollen. Ja mein Problem dürfte nicht all zu Überraschend sein:
Wieso funktioniert mein Code nicht?

Delphi-Quellcode:
procedure TForm2.IdFTP2WorkBegin(ASender: TObject; AWorkMode: TWorkMode;
  AWorkCountMax: Integer);
begin
Form4.ProgressBar1.Max := AWorkCountMax;
  Form4.ProgressBar1.Position := 0;
end;

procedure TForm2.IdFTP2Work(ASender: TObject; AWorkMode: TWorkMode;
  AWorkCount: Integer);
Var
  S: String;
  TotalTime: TDateTime;
  H, M, Sec, MS: Word;
  DLTime: Double;
begin
application.processMessages;
  //Errechnen der Transfergeschwindigkeit:
  TotalTime := Now - STime;
  DecodeTime(TotalTime, H, M, Sec, MS);
  Sec := Sec + M * 60 + H * 3600;
  DLTime := Sec + MS / 1000;
  if DLTime > 0 then
    AverageSpeed := (AWorkCount / 1024) / DLTime;
  S := FormatFloat('0.00 KB/s', AverageSpeed);
  case AWorkMode of
    wmRead: Form4.StatusBar1.Panels[1].Text := 'Download speed ' + S;
    wmWrite: Form4.StatusBar1.Panels[1].Text := 'Uploade speed ' + S;
  end;

  //Aktualisieren der Fortschrittsanzeige:
  Form4.ProgressBar1.Position := AWorkCount;
end;
mfg napsterXX
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#2

Re: FTP Fortschritt > Progressbar

  Alt 23. Mai 2007, 12:39
Hmm,

ich denke mal, dass Du vergessen hast, die Schäfchen zu zählen.

Was geht denn nicht? Schon mal mit dem Debugger nachgeschaut?
  Mit Zitat antworten Zitat
napsterxx

Registriert seit: 18. Mär 2007
Ort: Borland
556 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: FTP Fortschritt > Progressbar

  Alt 23. Mai 2007, 12:45
Was nicht geht kann ich nicht so genau sagen. Also folgendes: Wenn ich mit dem Download einer Datei beginne bleibt mein kompletter PC stehen. Es hilft nur noch ein Neustart. Nichts anderes. Eigendlich hatte ich ja dieses das das Programm nicht einfriert:
application.processMessages;

Als ich dies im OnWork Ereignis hatte ohne die Aktuallisierung der Progressbar ist es auch nicht eingefroren. Nun ja. Mehr kann ich nicht sagen.
  Mit Zitat antworten Zitat
CCRDude
(Gast)

n/a Beiträge
 
#4

Re: FTP Fortschritt > Progressbar

  Alt 23. Mai 2007, 13:43
Hmmm weiß nicht mehr genau ob das bei Indy genauso ist, aber bei Synapse ist der WorkCount nur die Größe des aktuellen Paketes, NICHT die Gesamtgröße zum aktuellen Zeitpunkt. Das müsste dann von Hand aufsummiert werden, sonst ist der Balken immer ganz am Anfang.

Zweitens sollte man Position und Max wohl eher nicht direkt auf die Größe setzen, soll ja vorkommen daß mal jemand eine größere Datei verschiebt, die den Rahmen dort sprengt. Besser in Prozente umrechnen. Wobei, wenn Indy eh maximal MaxInt als Größe kann auch wieder nicht so wichtig.

Gegen das Hängend-Erscheinen gabs doch bei den Indys dieses TIdAntiFreeze?
  Mit Zitat antworten Zitat
napsterxx

Registriert seit: 18. Mär 2007
Ort: Borland
556 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: FTP Fortschritt > Progressbar

  Alt 23. Mai 2007, 13:49
Ja aber das funktionierte bei mir nicht.
Du derefernzierst p2 einmal und weißt die Adresse von i zu. Das heißt p2 (also der Zeiger auf einen Zeiger) zeigt auf den Zeiger p1 welchen du so auf i zeigen lässt.
  Mit Zitat antworten Zitat
Born-to-Frag

Registriert seit: 19. Nov 2005
1 Beiträge
 
Delphi 2005 Professional
 
#6

Re: FTP Fortschritt > Progressbar

  Alt 23. Mai 2007, 18:41
hm.. 2mal der gleiche Code, einmal mit Application.ProcessMessages, einmal ohne?
Machs oben doch auch mal hin.. oder lädst du mit IdFTP2?

BTW: Das stehenbleiben des Threads ist klar.. du müsstest halt noch nen 2. Thread erstellen...


greetz

€: Lass dir doch mal WorkCount ausgeben, oder erhöh die Progressbar mal immer um 100 zum Test oder irgendsowas..
  Mit Zitat antworten Zitat
napsterxx

Registriert seit: 18. Mär 2007
Ort: Borland
556 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: FTP Fortschritt > Progressbar

  Alt 24. Mai 2007, 17:32
So leutz habs nun anders gemacht und es geht. Naja Code kopieren ist wohl nicht das ware hehe
Du derefernzierst p2 einmal und weißt die Adresse von i zu. Das heißt p2 (also der Zeiger auf einen Zeiger) zeigt auf den Zeiger p1 welchen du so auf i zeigen lässt.
  Mit Zitat antworten Zitat
Benutzerbild von inherited
inherited

Registriert seit: 19. Dez 2005
Ort: Rosdorf
2.022 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: FTP Fortschritt > Progressbar

  Alt 24. Mai 2007, 19:37
1. Bin ich nicht "leutz"
2. Wärst du so nett deinen Code zu Posten, damit noch andere von deinen geistigen Ergüssen profitieren können?
Nikolai Wyderka

SWIM SWIM HUNGRY!
Neuer Blog: hier!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:23 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