Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Datumsänderung mitbekommen (https://www.delphipraxis.net/56412-datumsaenderung-mitbekommen.html)

EConvertError 5. Nov 2005 09:48


Datumsänderung mitbekommen
 
Hallo!

Mein Programm sollte täglich eine Logdatei erstellen. Da es aber unter Umständen mehrere Tage ohne Unterbrechung läuft (bzw. z.B. von 23.15 bis 00.30), würde ich gerne mitbekommen, wenn sich das Datum ändert, sprich wenn ein neuer Tag anbricht.

Bisher habe 2 Möglichkeiten gefunden, die mir allerdings wenig elegant erscheinen:
a) Das Datum regelmäßig (jede Minute, oder so) mit einem Timer zu checken
b) Im OnIdle Event das Datum regelmäßig zu checken

Ich hoffe, dass ihr bessere Ideen habt. Vielleicht hat Windows irgendeine Message für solche Fälle?
Danke,
Andreas

ripper8472 5. Nov 2005 09:55

Re: Datumsänderung mitbekommen
 
unter unix gibts etwas, das nennt sich cron.
der checkt jede minute, ob er was zu tun hat. in der zwischenzeit wird ge-sleept().
sehr resourcensparend. hab sowas nachprogrammiert und das teil laeuft auf meiner box tagelang und verbraucht kaum eine sekunde prozessorzeit.

marabu 5. Nov 2005 09:57

Re: Datumsänderung mitbekommen
 
Hallo Andreas,

du kannst in der Schreibroutine prüfen, ob der richtige LogFile existiert:

Delphi-Quellcode:
var
  logFile: TextFile;

function CurrentLogFileName: string;
begin
  Result := ChangeFileExt(DateToStr(Now), '.log');
end;

procedure Log (msg: string);
var
  dt: TDateTime;
  lfn: string;
begin
  lfn := CurrentLogFileName;
  if FileExists (lfn) then
    Append (logFile)
  else begin
    AssignFile(logFile, lfn);
    Rewrite (logFile);
  end;

  dt := now;
  if msg = '' then
    WriteLn(logFile)
  else begin
    Write(logFile, FormatDateTime('yyyy-mm-dd', dt), ' ');
    Write(logFile, FormatDateTime('hh:mm:ss', dt), ': ');
    WriteLn(logFile, Translate(msg, #13#10, #32#32));
  end;

  CloseFile (logFile);
end;
Grüße vom marabu

EConvertError 5. Nov 2005 10:06

Re: Datumsänderung mitbekommen
 
Das Teil unter Unix/Linux kenne ich, aber wenn ich so etwas nachschreibe, dann muss ich ja wieder jede Minute das Datum checken. Genau das will ich ja vermeiden.

Marabu: Da stellt sich aber die Frage, wann ich die Schreibroutine aufrufen soll? Wenn ich das jede Minute mache, komme ich wieder auf das selbe hinaus, wie ich oben in meinen 2 Möglichkeiten beschrieben habe.

leddl 5. Nov 2005 10:12

Re: Datumsänderung mitbekommen
 
Naja, wenn du eine Logdatei erstellst, hast du ja bestimmte Events, bei denen du einen Eintrag zur Logdatei hinzufügst. Wenn du genau dann das Datum überprüfst, kannst du doch nichts falsch machen, oder?

ripper8472 5. Nov 2005 10:15

Re: Datumsänderung mitbekommen
 
im ernst.
jede minute das datum checken ist nahezu kostenlos.
windows hat eine mstask.exe, die auch nichts anderes macht.

und wenn du die loggingfunktionen der betreffenden programme kontrollieren kannst, dann mach da gleich den datumsvergleich rein.

EConvertError 5. Nov 2005 11:23

Re: Datumsänderung mitbekommen
 
Danke für die Antworten...

Das Problem ist, dass ich eben keine bestimmten Events habe, weil das Programm ein Netzwerktrafficmonitor ist. Und in der Logdatei soll dann Download/Upload des Tages stehen. Deshalb bin ich ja in dieser Lage.

Wenn es da keine ordentliche Lösung gibt, dann bleiben mir sowieso nur 2 Möglichkeiten:
a) Logdatei pro Sitzung.
b) Das Datum regelmäßig zu checken, wie es mir auch ripper8472 empfiehlt.

leddl 5. Nov 2005 11:43

Re: Datumsänderung mitbekommen
 
Naja, in deinem Fall mußt du ja sowieso regelmäßig checken, wieviel Traffic entstanden ist. Wenn du bei der Prüfung auch gleich noch die Datumsprüfung einbaust, sollte das doch passen, oder?

EConvertError 5. Nov 2005 11:52

Re: Datumsänderung mitbekommen
 
Ja das stimmt. Ich habe sowieso einen Timer, der jede Sekunde Daten von der Schnittstelle abholt. Es ist für mich keine Problem dort auch das Datum zu überprüfen. Ich hielt es nur für übertrieben, jede Sekunde das Datum zu checken. Ich werde das jetzt wohl machen.

Danke für eure Hilfe,
Andreas

leddl 5. Nov 2005 11:56

Re: Datumsänderung mitbekommen
 
Wird aber notwendig sein, um den Traffic genau aufzuteilen. Und wie gesagt, diese zusätzliche Anweisung kostet so gut wie nichts.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:16 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz