Hallo
DP Team!
Ich habe ein Programm geschrieben, welches Daten Importiert. Je nach Menge der Daten dauert dies auch Unterschiedlich Lang.
Ich habe also versucht mich an der Berechnung der Ungefähren Verbleibenden Zeit auszuprobieren.
Es lief sehr gut der Zeit die zeit an und Zählt Runter aber zum Ende hin ist eine Differenz von 3-10 Sekunden zu sehen.
Hier einmal der Source der Berechnung:
Delphi-Quellcode:
procedure TFNeuClient.BimportClick(Sender: TObject);
var SL, use : TStringlist;
i : Integer;
freq: Int64;
startTime: Int64;
endTime: Int64;
time, timedurchsch : Real;
begin
// initialisierungen...
For i := 0
to sl.count-1
do
begin
QueryPerformanceFrequency(freq);
QueryPerformanceCounter(startTime);
// Startzeit ermitteln
// Routine die Durchlaufen wird zum importieren (hier ja unwichtig)
QueryPerformanceCounter(endTime);
// Endzeit eines Durchlaufes
time := time +((endTime - startTime) * 1000
div freq)*(Sl.Count-i);
// Zusammenrechnen
if i <> 0
then // Division durch 0 Verhindern
timedurchschn := time/i;
// Durchschnitt ausrechnen
Form1.label3.Caption:='
Verbleibende Zeit: ' + FormatDateTime( '
hh:mm:ss',timedurchschn / (24*60*60*1000));
// Anzeigen
Application.ProcessMessages;
// GUI Sagen das das Programm nicht Hängt^^
end;
Fmain.initSG;
Showmessage('
Importvorgang abgeschlossen!');
Form1.Hide;
Babort.Click;
Fmain.Enabled:=true;
Die Frage ist nun geht dies Eleganter bzw. kann man die Abweichung genauer hinbekommen?
Ich Denke es liegt an Dem Mittelwert den ich Ausrechne habe bisher aber noch keine Bessere Lösung gefunden
für Denkanstöße bin ich dankbar!
LG
muhael