AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Geschätze Zeit

Ein Thema von Peeters · begonnen am 15. Dez 2003 · letzter Beitrag vom 16. Dez 2003
Antwort Antwort
Peeters

Registriert seit: 3. Dez 2002
Ort: Meerbusch
86 Beiträge
 
Delphi 2007 Enterprise
 
#1

Geschätze Zeit

  Alt 15. Dez 2003, 23:26
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:

  LabelZeit.Caption := Format('Geschätzte Zeit : %:%:% ',[vl_i div 3600, vl_i mod 3600, vl_i mod 60]); 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?
Peeters
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Geschätze Zeit

  Alt 15. Dez 2003, 23:31
Zwei Fragen, zwei Threads bitte.

%.3d dann hast du immer 3 führende Nullen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#3

Re: Geschätze Zeit

  Alt 15. Dez 2003, 23:48
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]);
$2B or not $2B
  Mit Zitat antworten Zitat
Peeters

Registriert seit: 3. Dez 2002
Ort: Meerbusch
86 Beiträge
 
Delphi 2007 Enterprise
 
#4

Re: Geschätze Zeit

  Alt 15. Dez 2003, 23:53
Vielen Dank, so schön kann der Baum vor dem Wald sein.
Peeters
  Mit Zitat antworten Zitat
Chris1986

Registriert seit: 17. Jul 2003
Ort: Aachen
350 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Geschätze Zeit

  Alt 16. Dez 2003, 00:08
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:
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;
Soweit so gut. Das ist glaube ich nicht besonders schwierig
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:
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;
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.

MfG
Christian
Angehängte Dateien
Dateityp: rar sortieralgorithmus.rar (19,2 KB, 24x aufgerufen)
Es gibt nur 10 Typen von Menschen auf der Welt:
Die, die Binärcode verstehen und die, die es nicht tun . . .
  Mit Zitat antworten Zitat
Chris1986

Registriert seit: 17. Jul 2003
Ort: Aachen
350 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Geschätze Zeit

  Alt 16. Dez 2003, 00:09
Und ich mach mir so ne Arbeit
Es gibt nur 10 Typen von Menschen auf der Welt:
Die, die Binärcode verstehen und die, die es nicht tun . . .
  Mit Zitat antworten Zitat
Peeters

Registriert seit: 3. Dez 2002
Ort: Meerbusch
86 Beiträge
 
Delphi 2007 Enterprise
 
#7

Re: Geschätze Zeit

  Alt 16. Dez 2003, 00:48
Es ist trozdem sehr intressant. Danke.
Peeters
  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 17:48 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