14. april 2003 - 16:11
Der er
2 løsninger
Gem uptime i fil
Jeg har lavet en del af et program, men jeg kan ikke lige finde ud af at gemmen uptiden (startid og sluttid, samt antalsession(fortæller hvor mange gange programmet har kørt) ...
var
Nuvstartid: TTime;
NuvStopTid: TTime;
Antalsessions: Integer;
Altså hvordan opretter man en fil, og gemmer disse værdier i! (-skal kunne hentes frem for udregning af gennemsnit og samlet uptid!
nicholai
14. april 2003 - 19:36
#1
Du smidder din info i en record istedet...
type
DinData = record
Nuvstartid: TTime;
NuvStopTid: TTime;
Antalsessions: Integer;
end;
...og så kan du læse og skrive det i en fil erklæret som:
var
f: file of DinData
15. april 2003 - 14:17
#2
Laver lige et par klasser til dig:
interface
type
TMyTime = class(TObject)
private
Started: Boolean;
FStart, FStop: Cardinal;
function GetDifference: Cardinal;
public
function Start: Boolean; //Hvis falsk er tiden startet
function Stop: Boolean; //Hvis falsk er tiden startet
property Difference: Cardinal read GetDifference; //Milisekunder
end;
TMyTimes = class(TObject)
private
FTimes: array of Cardinal;
function GetTime(Index: Integer): Cardinal;
procedure SetTime(Index: Integer): Cardinal;
function GetCount: Integer;
public
procedure LoadFromFile(FileName: String);
procedure SaveToFile(FileName: String);
procedure Add(Time: Cardinal);
property Count: Integer read GetCount;
property Times[Index: Integer]: Cardinal read GetTime write SetTime;
end;
implementation
function TMyTime.Start: Boolean;
begin
if Started then
begin
Result := False;
Exit;
end;
FStart := GetTickCount;
Started := True;
end;
function TMyTime.Stop: Boolean;
begin
if not Started then
begin
Result := False;
Exit;
end;
FStop := GetTickCount;
Started := False;
end;
function TMyTime.GetDifference: Cardinal;
begin
Result := FStart - FStop;
end;
{ TMyTimes }
function TMyTimes.GetTime(Index: Integer): Cardinal;
begin
Result := FTimes[Index];
end;
procedure TMyTimes.SetTime(Index: Integer; Value: Cardinal);
begin
FTimes[Index] := Value;
end;
function TMyTimes.GetCount: Integer;
begin
Result := High(FTimes) + 1;
end;
procedure TMyTimes.LoadFromFile(FileName: String);
var
F: File of Cardinal;
I: Integer;
Dummy: Cardinal;
begin
AssignFile(F, FileName);
FileMode := fmOpenRead;
Reset(F);
I := 0;
while not Eof(F) do
begin
Inc(I);
SetLength(FTimes, I);
Read(F, Dummy);
FTimes[I-1] := Dummy;
end;
CloseFile(F);
end;
procedure TMyTimes.SaveToFile(FileName: String);
var
F: File of Cardinal;
I: Integer;
Dummy: Cardinal;
begin
AssignFile(F, FileName);
Rewrite(F);
for I := 0 to High(FTimes) do
Write(F, FTimes[I]);
CloseFile(F);
end;
procedure TMyTimes.Add(Time: Cardinal);
begin
SetLength(FTimes, Count + 1);
FTimes[High(FTimes)] := Time;
end;
Har ikke lige kigget det rigtigt i gennem, men tror nok at den skulle være god nok! ;)
//hermandsen