PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit einer Funktion


Date Murphy
14.07.2002, 19:06
Hi,

Ich nutze diese Funktion, um die Windows Uptime zu berechnen:


function UpTime: string;
const
ticksperday: Integer = 1000 * 60 * 60 * 24;
ticksperhour: Integer = 1000 * 60 * 60;
ticksperminute: Integer = 1000 * 60;
tickspersecond: Integer = 1000;
var
t: Longword;
d, h, m, s: Integer;
begin
t := GetTickCount;

d := t div ticksperday;
Dec(t, d * ticksperday);

h := t div ticksperhour;
Dec(t, h * ticksperhour);

m := t div ticksperminute;
Dec(t, m * ticksperminute);

s := t div tickspersecond;

Result := 'Uptime: ' + IntToStr(d) + ' Days ' + IntToStr(h) + ' Hours ' + IntToStr(m) +
' Minutes ' + IntToStr(s) + ' Seconds';
end;

Ich möchte nun die Tage, Stunden, Minuten und Sekunden in jeweils einm Panel darstellen, hat jemand einen Tipp für mich, wie ich das am besten realisiere ? Danke schon mal.

Gruß Date Murphy :)


Felix Kaiser
14.07.2002, 19:18
Ein TPanel in einem Fenster? Dann platziere im Formular ein TPanel Objekt und ein TTimer Objekt. Setze den Interval des Timers auf 1000ms und lasse bei jedem OnTimer die Eigenschaft Caption des Panels mit dem Wert aus UpTime aktualisieren.

Date Murphy
14.07.2002, 19:48
@ Felix Kaiser

So weit war ich schon, habe nur Probleme die Variablen, welche die Anzahl der Tage, Stunden,

Minuten und Sekunden enthalten, an das Panel zu übergeben. Könntest du mir da vielleicht weiterhelfen ?

DerWolf
14.07.2002, 20:01
Panel1.Caption := Uptime;
oder wie?

Date Murphy
14.07.2002, 20:46
@ DerWolf

Ja, das ginge schon, aber dann würde die Komplette Funktion im ersten Panel angezeigt werden,

ich möchte aber Tage, Stunden, Minuten und Sekunden in jeweils einem Panel anzeigen, genau da liegt mein Problem.

Messiah_of_Death
15.07.2002, 11:25
So hab's geändert und gecheckt -> es läuft



type

TSArray = array[0..3] of string; <- neuer Typ



function Uptime: TSArray; <- geänderter Funktionskopf


// Werte in das Array

result[0] := IntToStr(d);
result[1] := IntToStr(h);
result[2] := IntTostr(m);
result[3] := IntToStr(s);



Button Klick (o.ä.) Event:

Panel1.Caption := 'Tage: ' + Uptime[0];
Panel2.Caption := 'Stunden: ' + Uptime[1];
Panel3.Caption := 'Minuten: ' + Uptime[2];
Panel4.Caption := 'Sekunden: ' + Uptime[3];

DerWolf
15.07.2002, 17:46
Date Murphy, ich hatte die Lösung für dein Prob schon gepostet, habs aber dann gelöscht weil ich laut posting von Felix Kaiser dachte du meinst was anderes... :)

Date Murphy
21.07.2002, 14:18
Habe mein Problem so gelöst:


procedure UpTime;
const
ticksperday: Integer = 1000 * 60 * 60 * 24;
ticksperhour: Integer = 1000 * 60 * 60;
ticksperminute: Integer = 1000 * 60;
tickspersecond: Integer = 1000;
var
t: Longword;
d, h, m, s: Integer;
begin
t := GetTickCount;

d := t div ticksperday;
Dec(t, d * ticksperday);

h := t div ticksperhour;
Dec(t, h * ticksperhour);

m := t div ticksperminute;
Dec(t, m * ticksperminute);

s := t div tickspersecond;

Label1.Caption:=IntToStr(d) + ' Days ';
Label2.Caption:=IntToStr(h) + ' Hours ';
Label3.Caption:=IntToStr(m) + ' Minutes ';
Label4.Caption:=IntToStr(s) + ' Seconds';
end;

Gruß Date Murphy :D