Announcement

Collapse
No announcement yet.

Zeit seit Windows-Start ermitteln

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Zeit seit Windows-Start ermitteln

    Hallo,

    ich versuche durch Folgendes die Zeit seit dem Systemstart zu ermitteln:

    <b>Label1.Caption:= Format('%d',[GetTickCount]);</b><br>

    Nun wird die Zeit aber nicht korrekt dargestellt.
    Kann mir jemand verraten, wie ich das in ein vernünftiges Format bekomme??
    Z.B.: <b>1 Tag(e) 20 Stunden 17 Minuten 14 Sekunden </b>

    Für ein kleine Hilfe wäre ich sehr dankbar.

    mfg

    Torsten Bloth

  • #2
    Wenn ich mich nicht verhaut habe müsste folgender Codeausschnitt dir weiterhelfen:

    <pre>
    var
    strTimeSinceStart: String;
    ticks: DWORD;
    days: Integer;
    hours: Integer;
    minutes: Integer;
    seconds: Integer;
    begin
    ticks := GetTickCount;
    days := ticks DIV 86400;
    ticks := ticks MOD 86400;
    hours := ticks DIV 3600;
    ticks := ticks MOD 3600;
    minutes := ticks DIV 60;
    ticks := ticks MOD 60;
    seconds := ticks;

    strTimeSinceStart :=
    Format('%d Tag(e) %d Stunden %d Minuten %d Sekunden'
    [days, hours, minutes, seconds]);
    end;
    </pre&gt

    Comment


    • #3
      Hallo,

      vielen Dank für diesen Code.
      Habe ihn noch nicht getestet. Ich bin aber sehr zuversichtlich.

      mfg

      Torsten Blot

      Comment


      • #4
        Hallo,

        ich bin es noch mal!
        Irgendwie funzt dieser Code nicht so recht. Es wird zwar eine Zeit ermittelt, aber die scheint mir nicht ganz richtig zu sein.
        Mein Rechner lief schon 155 Tage. Die Stunden zählten fast im Sekundenrhythmus aufwärts. Naja, und die Minuten und Sekunden waren völlig durcheinander.

        mfg

        Torsten Blot

        Comment


        • #5
          So, ich bin es schon wieder.

          Der obige Ansatz hat sehr geholfen. Nun habe ich auch de´n Fehler gefunden.
          <b>GetTickCount</b> wird in Millisekunden angegeben. Somit stimmte die Umrechnung nicht ganz.
          So sollte es, glaube ich, funktionieren:
          <br>
          <br>
          <br>
          <br>
          ticks := GetTickCount;<br>
          days := ticks DIV 86400000;<br>
          ticks := ticks MOD 86400000;<br>
          hours := ticks DIV 3600000;<br>
          ticks := ticks MOD 3600000;<br>
          minutes := ticks DIV 60000;<br>
          ticks := ticks MOD 60000;<br>
          seconds := ticks DIV 1000;<br>
          ticks := ticks MOD 1000;<br>
          milli_seconds := ticks;<br>
          <br>
          <br>
          Ich habe diese Version aber auch erst ein paar Minuten getestet.

          mfg

          Torsten Blot

          Comment


          • #6
            Hallo,

            zu Time-Problemen sollte man unbedingt die Ausgabe 03/2001 von "Der Entwickler" lesen (ab S. 57). Insbesondere ist evtl. zu beachten das im obigen Beispiel TICKS ein DWORD ist und somit bei einer Rückgabe in Millisekunden nach "ca. 49,71 Tagen" (Zitat) Schluss ist.

            Ciao
            Carl

            Comment


            • #7
              Das ganze geht auch viel einfacher:
              Die Funktion "GetTickCount" gibt die vergangene Zeit seit dem
              Windowsstart an:

              ShowMessage('Windowsstart vor ' + IntToStr(GetTickCount Div 1000) + 'Sekunden')

              Comment

              Working...
              X