![]() |
Ganzzahl in Zeit Kovertieren?
Ich versuche die verbleibene Zeit eines Downloads wie folgt zu berechnen:
Delphi-Quellcode:
Label13 gibt mir nun eine Ganzzahl aus. Wie formatiere ich nun letztenendes in Stunde, Minute, Sekunde?
procedure TLizenz.IdHTTP1Work(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCount: Integer); var i:Integer; begin if (GetTickCount - FTime) >= 1000 then begin label8.caption := Format('%.2f KB/s', [(AWorkCount - FBytes) / (GetTickCount - FTime)]); Label11.Caption:=Format('%.0f', [(AWorkCount - FBytes) / (GetTickCount - FTime)]); i:=StrToInt(Label11.Caption); FTime := GetTickCount; FBytes := AWorkCount; Label6.Caption := 'Download läuft ! '+' ('+inttostr(AWorkCount div 1024)+' kB von '+inttostr(IdHTTP1.Response.ContentStream.Size div 1024)+' kB)'; Gauge1.Progress := AWorkCount*100 div IdHTTP1.Response.ContentStream.Size; Gauge1.MaxValue := IdHTTP1.Response.ContentStream.Size; Gauge1.Progress := AWorkCount; //geladene Bytes von Gesamtbytes abziehen Label10.Caption:=inttostr(IdHTTP1.Response.ContentStream.Size - AWorkCount); //und das ganze dividieren mit der Geschwindigkeit Label13.Caption:=IntToStr(StrToInt(Label10.Caption) div i; application.ProcessMessages; end; end; |
Re: Ganzzahl in Zeit Kovertieren?
Kleines Beispiel: :)
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var dTime: TTime; wHour, wMin, wSec, wMSec: Word; dwMaxSeconds: DWORD; begin dwMaxSeconds := StrToIntDef(Edit1.Text, 0); if (dwMaxSeconds <= 86400) then begin wHour := ((dwMaxSeconds div 60) div 60) mod 24; wMin := (dwMaxSeconds div 60) mod 60; wSec := dwMaxSeconds mod 60; wMSec := 0; dTime := EncodeTime(wHour, wMin, wSec, wMSec); Label1.Caption := TimeToStr(dTime); end else // mehr als "23:59:59" ggf. andere Darstellungsweise end; |
Re: Ganzzahl in Zeit Kovertieren?
Also wenn ich das richtig vertsanden habe, müßte ich für Edit1 das Label13 aus meinen Source angeben?
|
Re: Ganzzahl in Zeit Kovertieren?
Wenn ich mich nicht ganz verhaue sollte es so gehen, wenn die Geschwindigkeit irgendwas pro Sekunde ist.
Dann sind 3600 Sekunden eine Stunde, 60 Sekunden eine Minute und der Rest sind Sekunden.
Delphi-Quellcode:
Grüße
Stunden := (StrToInt(Label10.Caption) div i) div 3600;
Minuten := ((StrToInt(Label10.Caption) div i) mod 3600) div 60; sekunden := ((StrToInt(Label10.Caption) div i) mod 3600) mod 60; Klaus |
Re: Ganzzahl in Zeit Kovertieren?
@Klaus01,
So langsam habe ich nur noch Zahlendreher. Könntest Du mal Dein Beispiel auf meins anwenden? |
Re: Ganzzahl in Zeit Kovertieren?
Ich dachte mir das ungefähr so:
Delphi-Quellcode:
Grüßevar stunden, minuten, sekunden: Integer; ... stunden := (StrToInt(Label10.Caption) div i) div 3600; minuten := ((StrToInt(Label10.Caption) div i) mod 3600) div 60; sekunden := ((StrToInt(Label10.Caption) div i) mod 3600) mod 60; label13.caption:=format('%.2d : %.2d : %.2d',[stunden,minuten,sekunden]); Klaus |
Re: Ganzzahl in Zeit Kovertieren?
Ja, so geht's. Danke.
|
Re: Ganzzahl in Zeit Kovertieren?
Psst,
es gibt da noch eine Abkürzung durch den Wald - für die ganz harten Typen:
Delphi-Quellcode:
Coole Grüße
TimeToStr(ticks * MSecsPerDay)
|
Re: Ganzzahl in Zeit Kovertieren?
Und keiner hat gemerkt, dass der Stern ein Schrägstrich sein muss:
Delphi-Quellcode:
TimeToStr(ticks / MSecsPerDay)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:35 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