![]() |
Delphi-Version: XE2
Bei wachsendendem Logfile auf bestimme Zeile reagieren
Hallo DP !
Ein Programm loggt Ereignisse mit und schreibt es in ein logfile. Ich moechte nun dieses Logfile ueberwachen und bei einer bestimmte Zeile einen einfachen beep ausgeben. Auszug aus dem Logfile: 1) Tomaten sind meistens rot 2) Telefonieren ist teuer 3) Tanken auch ! 4) Delphi ist: [einfach toll] 5) Delphi ist: [total genial] 6) Wer mag Bananen? Ich interessiere mich fuer folgende Zeilen: "Delphi ist: [Text]" Ein Timer soll die Ueberwachung des Logfiles uebernehmen und einen beep ausgeben sobald die Zeile: "Delphi ist: [Text]" ins logfile geschrieben wird.
Delphi-Quellcode:
Somit
procedure TForm1.Timer1Timer(Sender: TObject);
var sl:TStringList; s :string; begin sl := TStringList.Create; sl.LoadFromFile(e_logpath.Text); //nach der Zeile suchen //wenn gefunden: beep sl.Free; end;
Delphi-Quellcode:
ist das ganze Logfile in der Stringlist. Ist aber nicht notwendig weil mich immer nur die neuen Zeilen interessieren, die nach dem aktivieren des Timers hinzukommen.
sl.LoadFromFile(e_logpath.Text);
Mit
Delphi-Quellcode:
kann ich das Vorkommen der Zeile sicherstellen.
TStringList.IndexOf('Delphi ist: ');
Eigentlich hab ich fast alle Bausteine die notwendig sind, aber ich schaff es damit nicht mein Problem damit zu loesen. Koennt ihr mir helfen? |
AW: Bei wachsendendem Logfile auf bestimme Zeile reagieren
IndexOf vergleicht immer den gesamten String. Damit findest du mit
Delphi-Quellcode:
die im Beispiel aufgeführten Zeilen nicht.
sl.IndexOf('Delphi ist: ');
|
AW: Bei wachsendendem Logfile auf bestimme Zeile reagieren
Delphi-Quellcode:
Damit finde ich das 1. Vorkommen meines Suchstrings. Aber um das neuste Vorkommen des Suchstrings zur Laufzeit zu ermitteln ist fuer mich noch nicht loesbar.
procedure TForm1.Button1Click(Sender: TObject);
const SearchString = 'Delphi ist: '; var MyTextFileContent : TStringList; i : Integer; tempStr : String; begin MyTextFileContent := TStringList.Create; try MyTextFileContent.LoadFromFile(e_logpath.Text); except Showmessage('Motz, kreisch'); MyTextFileContent.Free; exit; end; for i := 0 to MyTextFileContent.Count -1 do if pos(SearchString,MyTextFileContent[i]) <> 0 then begin tempStr := MyTextFileContent[i]; delete(tempStr,1,pos(SearchString,MyTextFileContent[i])+ length(SearchString)-1); showmessage('gefunden in Zeile ' + Inttostr(i +1)); MyTextFileContent.Free; exit; end; MyTextFileContent.Free; end; |
AW: Bei wachsendendem Logfile auf bestimme Zeile reagieren
Zweiteilen? Ein Logfile und ein Logfile Archiv? Logfile protokolliert letzte Aktionen, Archiv enthällt alles.
|
AW: Bei wachsendendem Logfile auf bestimme Zeile reagieren
Theoretisch muesste mein Programm beim Start direkt zum EOF des Logfiles springen und ab da mit der Ueberwachung anfangen. Aber wie stellt man sowas an ?
|
AW: Bei wachsendendem Logfile auf bestimme Zeile reagieren
Wie wäre es mit Streams? Darin kann man doch prima navigieren.
|
AW: Bei wachsendendem Logfile auf bestimme Zeile reagieren
Zitat:
|
AW: Bei wachsendendem Logfile auf bestimme Zeile reagieren
Zitat:
Delphi-Quellcode:
so z.B. oder mit verschiedenen Kombinationen der notwendigen Streams.
lf:=tfiestream.create(mylogfile,...);
lf.seek(lf.size,sofrombeginning); ... lf.write(....); nicht empfehlenswert ist die Verwendung von Textfile und Append. Gruß K-H |
AW: Bei wachsendendem Logfile auf bestimme Zeile reagieren
Zitat:
Delphi-Quellcode:
for i := MyTextFileContent.Count - 1 downto 0
|
AW: Bei wachsendendem Logfile auf bestimme Zeile reagieren
Schau dir doch mal Cromis.DirectoryWatch an, damit läßt sich sowas ohne Probleme lösen.
Du bekommst bei jeder Dateiänderung im vorgegebenen Pfad ein Event. [Delphi] procedure TMF.OnNotify(const Sender: TObject; const Action: TWatchAction; const FileName: string); .... If (FileName = 'LogFile.txt') and (Action = waModified) then Begin NewFileSize := getFileSize(CombatLog); If NewFileSize <> OldFileSize then Begin ... [/Delphi} |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:51 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz