Einzelnen Beitrag anzeigen

muhael

Registriert seit: 5. Mär 2013
42 Beiträge
 
#1

Ungefähr Verbleibende Zeit

  Alt 24. Aug 2015, 11:24
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
  Mit Zitat antworten Zitat