Autor |
Beitrag |
DerNetteNachbar
      
Beiträge: 224
|
Verfasst: Fr 06.03.09 15:38
Grüsse euch,
wie ihr schon aus dem Thread Titel erkennen könnt geht es um Zeit. Und zwar möchte ich die Zeit berechnen die mir bei einer Datenbankabfrage verbleibt bzw. die Gesamtzeit daraus errechnen.
Zur Verfügung habe ich die Gesamtanzahl Datensätze, die abgearbeiteten Datensätze, die abgelaufene Zeit.
Hab es bereits versucht mit dem Dreistaz zu rechnen, leider kommen da falsche Zahlen raus.
Wäre nett wenn einer mir helfen könnte.
MfG
Nachbar
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Fr 06.03.09 15:58
Moin!
Das ist relativ einfach, lade dir einfach die Komponente TFluxCompensator von www.futurecomponents.net runter, die kann das. Gibt auch glaube ich eine deutsche Übersetzung, heißt TWahrsagen...
Das geht nicht, woher willst du genau wissen, wie lange etwas dauert, solange der Vorgang noch läuft. Das kann man nur schätzen.
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Fr 06.03.09 15:59
Einfaches Rechenbeispiel: 60 von 200 Datensätzen in 30 Sekunden.
200 DS / 100 % = 2 ( => 1 % von Gesamt)
60 DS / 2 = 30 (=> 30 % Fortschritt)
30 Sec. / 30 % * 100 = 100 (=> 100 Sekunden für 100 %)
Wobei das wie bereits gesagt ja nur Näherungswerte sein können, die sind so aussagefähig wie die Schätzwerte, die der Explorer bei Dateioperationen anzeigt.
|
|
DerNetteNachbar 
      
Beiträge: 224
|
Verfasst: Fr 06.03.09 16:15
An DeddyH: kannst du mir bitte dein Beispeil etwas näher erläutern.
MfG
|
|
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Fr 06.03.09 16:52
Ist doch ganz einfach: Du teilst die Gesamtanzahl der Datensätze durch 100, damit erhältst Du den Wert, der einem Prozent entspricht. Durch diesen teilst Du nun die Anzahl der abgearbeiteten Datensätze und erhältst den bisherigen Fortschritt in Prozent. Durch diese Zahl teilst Du nun die bislang benötigte Zeit. Heraus kommt dabei ein Prozent der geschätzten Gesamtzeit, welches Du nun nur noch mit 100 multiplizieren musst.
|
|
Th69
      

Beiträge: 4798
Erhaltene Danke: 1059
Win10
C#, C++ (VS 2017/19/22)
|
Verfasst: Fr 06.03.09 17:12
Gesamtanzahl Datensätze: N
abgearbeitete Datensätze: n
abgelaufene Zeit: t(n)
=> Restzeit ~= t(n) / n * (N-n)
-------------------------------
Beispiel:
N = 100
n = 10
t(n) = 20 sec
=> Restzeit ~= 20 sec / 10 * (100 - 10) = 2 sec * 90 = 180 sec
=> Gesamtzeit = 20 sec + 180 sec = 200 sec
|
|
DerNetteNachbar 
      
Beiträge: 224
|
Verfasst: Fr 13.03.09 14:37
Vielen Dank für die Formel, wirklich Super.
Jetzte geb ich das auf ein Label aus. Erstmal natürlich in Sekunden. Jetzt habe ich mir gedacht, konvertierst halt in Minuten. Gesagt, getan, hab ich des durch 60 geteilt. Allerdings kommt jetzte sowas wie 2,1 Minuten raus. Ist natürlich etwas Käse. Möchte das in dem Format haben 1 Minute, 30 Sekunden. Allerdings ist mir das bisher nicht gelungen.
MfG
Nachbar
|
|
Xentar
      
Beiträge: 2077
Erhaltene Danke: 2
Win XP
Delphi 5 Ent., Delphi 2007 Prof
|
Verfasst: Fr 13.03.09 14:43
Schau dir mal FormatDateTime an, vielleicht hilft dir das.
Oder, wenn du händisch dividieren willst: div oder mod
Da dies aber nicht mehr viel mit der Restzeit selber, sondern eher mit der Formatierung der Ausgabe zu tun hat, solltest du einen neuen Thread aufmachen.
_________________ PROGRAMMER: A device for converting coffee into software.
|
|
JüTho
      
Beiträge: 2021
Erhaltene Danke: 6
Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
|
Verfasst: Fr 13.03.09 15:00
Da dieses Unterforum sowohl zu Delphi als auch C# gehört, verweise ich auf TimeSpan.ToString mit passendem Argument (nicht DateTime). Jürgen
|
|
DerNetteNachbar 
      
Beiträge: 224
|
Verfasst: Fr 13.03.09 15:19
Hallo, hat sich bereits erledigt danke trotzdem für euere Mühe:
Lösung:
Delphi-Quelltext 1: 2: 3:
| m := s div 60; if s >= 60 then s := s - 60 * (s div 60) + 1; |
MfG
Nachbar
|
|
JüTho
      
Beiträge: 2021
Erhaltene Danke: 6
Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
|
Verfasst: Fr 13.03.09 16:46
DerNetteNachbar hat folgendes geschrieben : | Hallo, hat sich bereits erledigt |
Naja, um 13.37 Uhr hatte es sich noch nicht erledigt. Woher hätten wir bis 14.18 Uhr erraten sollen, dass Dich unsere Antworten nicht mehr interessieren?
Übrigens sind Standard-Formatierungsbefehle immer besser: Wenn Du bei der nächsten Aufgabe Stunden oder Millisekunden berücksichtigen musst, fängst Du mit einer neuen Routine an. Eine Format-Anweisung gilt allgemein.
Jürgen
|
|