Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Ganzzahl in Zeit Kovertieren? (https://www.delphipraxis.net/86127-ganzzahl-zeit-kovertieren.html)

mlspider 9. Feb 2007 14:01


Ganzzahl in Zeit Kovertieren?
 
Ich versuche die verbleibene Zeit eines Downloads wie folgt zu berechnen:

Delphi-Quellcode:
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;
Label13 gibt mir nun eine Ganzzahl aus. Wie formatiere ich nun letztenendes in Stunde, Minute, Sekunde?

ste_ett 9. Feb 2007 14:24

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;

mlspider 9. Feb 2007 14:31

Re: Ganzzahl in Zeit Kovertieren?
 
Also wenn ich das richtig vertsanden habe, müßte ich für Edit1 das Label13 aus meinen Source angeben?

Klaus01 9. Feb 2007 14:32

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:
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;
Grüße
Klaus

mlspider 9. Feb 2007 14:39

Re: Ganzzahl in Zeit Kovertieren?
 
@Klaus01,

So langsam habe ich nur noch Zahlendreher. Könntest Du mal Dein Beispiel auf meins anwenden?

Klaus01 9. Feb 2007 14:54

Re: Ganzzahl in Zeit Kovertieren?
 
Ich dachte mir das ungefähr so:

Delphi-Quellcode:

var
  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]);
Grüße
Klaus

mlspider 9. Feb 2007 16:04

Re: Ganzzahl in Zeit Kovertieren?
 
Ja, so geht's. Danke.

marabu 9. Feb 2007 16:25

Re: Ganzzahl in Zeit Kovertieren?
 
Psst,

es gibt da noch eine Abkürzung durch den Wald - für die ganz harten Typen:

Delphi-Quellcode:
 TimeToStr(ticks * MSecsPerDay)
Coole Grüße

marabu 16. Okt 2007 21:27

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