![]() |
Geschätze Zeit
Hallo,
wie bekomme ich eine "Geschätzte Zeit" Programmiert? Mit einen Timer habe ich schon einmal die Datensätze gezählt die er pro sekunde schaft, und wollte nun die dafür "Geschätzte Zeit" berechnen, ungefähr so:
Delphi-Quellcode:
nur irgend wie kommt da nicht bei raus, nur die Sekunden sind richtig. Warum? und noch ein Frage wie bekommt man eine null for die Zahl wenn diese nur einstellig ist?
LabelZeit.Caption := Format('Geschätzte Zeit : %:%:% ',[vl_i div 3600, vl_i mod 3600, vl_i mod 60]);
|
Re: Geschätze Zeit
Zwei Fragen, zwei Threads bitte.
%.3d dann hast du immer 3 führende Nullen. |
Re: Geschätze Zeit
Nur heute mal:
Code:
Stunden := i div 3600;
Minuten := i div 60 mod 60; Sekunden := i mod 60; LabelZeit.Caption := Format('Geschätzte Zeit : %.3d:%.2d:%.2d', [vl_i div 3600, vl_i [b]div 60 mod 60[/b], vl_i mod 60]); |
Re: Geschätze Zeit
Vielen Dank, so schön kann der Baum vor dem Wald sein. :oops:
|
Re: Geschätze Zeit
Liste der Anhänge anzeigen (Anzahl: 1)
Hi
Wenn ich das richtig verstanden haben, dann willst du die Zeit Messen, die ein Programm braucht um eine bestimmte Anzahl von Datensätzen in einer Database zu bearbeiten und dann möchtest du für den User zusätzlich eine Restzeit in einem Label anzeigen, oder? Also, erstmal würde ich die Zeit nicht mit einem Timer messen. Die Zeit die ein Programm für eine Aufgabe brauchtm würde ich folgendermaßen messen:
Delphi-Quellcode:
Soweit so gut. Das ist glaube ich nicht besonders schwierig
var Startzeit, //Hier soll die Zeit gespeichert werden, bevor das Prog anfängt
Endzeit, //Hier wird die Zeit gespeichert, wenn die Prozedur durchlaufen wurde Differenz: TDatetime; //Die benötigte Zeit begin Startzeit := now; //now gibt die aktuelle Uhrzeit aus deine_Prozedur; //deine DB wird durchlaufen Endzeit := now; //Die Prozedur ist durchlaufen, die aktuelle Zeit wird gespeichert {Schön ist, dass man in Delphi die Möglichkeit hat in Delphi mit der Zeit zu rechnen} Differenz := Endzeit-Startzeit; showmessage ('Benötigte Zeit: '+timetostr(Differenz)); //gibt die Differenz aus {timetostr(:TDateTime) ist eine Funktion die die Zeit in einen string umwandelt} end; Die Restzeit ist etwas anspruchsvoller. Die Restzeit ist eine geschätzte Zeit. D.h. zu 100% wird sie nie stimmen. Sie funtioniert aber ähnlich wie die Gesamtzeit. Es wird die Zeit gemessen, die das Prog beispielsweise für einen Rechenschritt benötigt. Diese Zeit wird dann mit der Anzahl aller Rechenschritte multipliziert - die bis jetzt benötigte Zeit. Heißt:
Delphi-Quellcode:
So funktioniert es allerdings nur in der Theorie. Um Felder aktualisieren zu können benötigst du zusätzlich eine Delay-Function. Außerdem ist es sinnlos bei jedem Rechenschritt das Label zu erneuern. Ich habe dir mal ein Prog angehängt, das ich für die Schule geschrieben habe.
var Startzeit,
Zwischenzeit, Differenz: TDateTime; count: integer; const Anzahl_Datensaetze = 1000 begin Startzeit := now; for count := 1 to Anzahl_Datensaetze do begin berechne_Datensatz(count); //Deine Prozedur zwischenzeit := now; Differenz := Zwischenzeit - Startzeit; Label1.Caption := ('Restzeit: '+timetostr(Differenz/count*Anzahl_Datensaetze - Differenz)); {Zeit bis jetzt/bis jetzt gerechnete Datensätze*alle Datensätze - Zeit bis jetzt} end; end; MfG Christian |
Re: Geschätze Zeit
Und ich mach mir so ne Arbeit :roll:
|
Re: Geschätze Zeit
Es ist trozdem sehr intressant. Danke.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:02 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