Thema: Spam Atack!

Einzelnen Beitrag anzeigen

Popov
(Gast)

n/a Beiträge
 
#22

AW: Spam Atack!

  Alt 5. Apr 2015, 14:48
Ich hab mir gerade paar Gedanken gemacht wie ich die Computerzeiten loggen soll. Eine Möglichkeit ist natürlich den Start und das Ende von der Windowssitzung oder des Programms zu loggen. Hier besteht aber die Möglichkeit, dass der PC abstürzt oder sonstiges, so dass das Ende der Sitzung nicht erfasst wird.

Was mir gerade eingefallen ist, das ich für jede Minute - in der der PC an ist - in einer Zahl einfach ein Bit setze. Eine Stunde hat 60 Minuten, ein Int64 hat 64 Bits, passt. Für jede Minute wird ein Bit gesetzt, für jede Stunde ein neue Zahl genommen. Macht bei einer Ini pro Tag max. 25 Zeilen.

So stelle ich mir das in etwa vor (ohne den Bit-String, der ist nur für den Test):
Delphi-Quellcode:
function BitAtPos(APos: Byte): Int64;
begin
  Result := 0;
  if APos <= (SizeOf(Int64) * 8) then
    Result := Int64(1) shl (APos - 1);
end;

//Nur für den Test
function IntToBin(Int: Int64): String;
const
  b: array[Boolean] of Char = ('0', '1');
var
  i: Integer;
begin
  Result := '';
  for i := 1 to (SizeOf(Int64) * 8) do
    Result := b[(Int and BitAtPos(i)) > 0] + Result;
end;

var
  LastMinute: Word = 0;
  HourLog: Int64 = 0;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  if MinuteOf(Now) <> LastMinute then
  begin
    (*hier HourLog aus Ini laden*)
    HourLog := HourLog or BitAtPos(MinuteOf(Now));
    (*hier HourLog in Ini speichern*)
  end;

  //Anzeige nur für den Test
  Caption := IntToBin(HourLog) + ' - ' + IntToStr(HourLog);
end;
Hat jemand eine bessere Idee wie man Zeiten in denen der PC an ist loggen kann? Bin für Ideen offen.
  Mit Zitat antworten Zitat