Avatar billede nicholai_buhl Nybegynder
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
Avatar billede abpdk Nybegynder
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
Avatar billede hermandsen Juniormester
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
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester