![]() |
Wie kann ich exe.log Files für mein Program erstellen?
Hallo,
ich möchte mir log Files meines Programms ausgeben lassen. Allerdings weiß ich nicht, wie ich das machen kann? Mir wurde naher gelegt den JCL Debug expert zu benutzen, aber ich bekomme es damit nicht hin. Kann mir jemand helfen? :cry: |
Re: Wie kann ich exe.log Files für mein Program erstellen?
Zitat:
|
Re: Wie kann ich exe.log Files für mein Program erstellen?
Du musst dich um das erstellen der Log-Datei schon selber kümmern. Mach dir Gedanken darüber welche Infos in der Log enthalten sein sollen. Dann definierst du dir eine globale Variable von Typ TStrings, erstellst diese im onCreate als TStringList und an allen wichtigen Stellen wie z. B. Laden der Einstellungen fügst du der Liste einen Eintrag hinzu z. B. "Laden: C:\Config.dat". Natürlich gibts da noch ganz andere Möglichkeiten ein Logsystem zu realisieren, kommt halt drauf an welche Infos du brauchst und wie komplex deine Anwendung schon ist.
|
Re: Wie kann ich exe.log Files für mein Program erstellen?
Hi,
ich weiß ja nicht genau was du loggen willst aber ich würde dir dafür TIniFile oder TextFile empfehlen. Gruß Stormy |
Re: Wie kann ich exe.log Files für mein Program erstellen?
Also, das Problem hat sich etwas gewendet. Ich habe einträge für den logfile zwischen {$IFDEF name} und {$ENDIF} eingebunden. wenn ich jetzt unter projekteinstellungen -> definitionen 'name' eingebe und dann das programm ausführe, passiert aber nichts
|
Re: Wie kann ich exe.log Files für mein Program erstellen?
Zitat:
|
Re: Wie kann ich exe.log Files für mein Program erstellen?
{$IFDEF DebugLogging}
dbg.Add('TKomMainWnd.DateiNameMittelwerte'); {$ENDIF} überall im programm hab ich solche anweisungen |
Re: Wie kann ich exe.log Files für mein Program erstellen?
und das steht in der zugehörigen unit:
Code:
procedure TDebugLog.Add(text: String);
var t: TDateTime; f: TextFile; begin if (not Assigned(Self)) then Exit; t := Now; EnterCriticalSection(csDL); AssignFile(f, FName); try try Append(f); WriteLn(f, FormatDateTime('c.zzz - ', t)+text); except raise Exception.Create('In DebugLog kann nicht geschrieben werden!'); end; finally try CloseFile(f); except end; end; LeaveCriticalSection(csDL); end; constructor TDebugLog.Create(path: String); var i: Integer; lastTime: TDateTime; fn: String; fnFound: Boolean; f: file; begin inherited Create; InitializeCriticalSection(csDL); fnFound := false; lastTime := 0; for i := 1 to 5 do begin fn := path+IntToStr(i)+'.log'; if FileExists(fn) then begin if (lastTime > FileDateToDateTime(FileAge(fn))) then begin fnFound := true; break; end else begin lastTime := FileDateToDateTime(FileAge(fn)); end; end else begin fnFound := true; break; end; end; if (not fnFound) then fn := path+'1.log'; FName := fn; EnterCriticalSection(csDL); AssignFile(f, FName); try try Rewrite(f); except raise Exception.Create('DebugLog kann nicht angelegt werden!'); end; finally try CloseFile(f); except end; end; LeaveCriticalSection(csDL); end; destructor TDebugLog.Destroy; begin DeleteCriticalSection(csDL); inherited; end; end. |
Re: Wie kann ich exe.log Files für mein Program erstellen?
Delphi-Quellcode:
Das ist ja eine interessante Anweisung. Wozu ist die gut?
if (not Assigned(Self)) then
Exit; Grüße, Messie Edit: unsinnige Frage gestrichen |
Re: Wie kann ich exe.log Files für mein Program erstellen?
Wie und wo hast du "dbg" deklariert? Hast du mal ein Brakepoint auf die Zeile
Delphi-Quellcode:
gesetzt und geguckt ob sie überhaupt ausgeführt wird?
dbg.Add('TKomMainWnd.DateiNameMittelwerte');
Gruß Stormy |
Re: Wie kann ich exe.log Files für mein Program erstellen?
ja, wird ausgeführt... dbg hab ich in einer anderen unit deklariert als TDebugLog, welches die KLasse des vorherigen quellcodes ist
|
Re: Wie kann ich exe.log Files für mein Program erstellen?
Step dann doch mal dort rein und guck wo genau es abbricht.
|
Re: Wie kann ich exe.log Files für mein Program erstellen?
wie mach ich das? musst entschuldigen,bin noch nicht so lange bei ...
|
Re: Wie kann ich exe.log Files für mein Program erstellen?
Setz den Brakepoint auf
Delphi-Quellcode:
und wenn das Programm dann diese Zeile ausführen will sollte es anhalten.
dbg.Add('TKomMainWnd.DateiNameMittelwerte');
Anschließend kannst du mit F7 dort rein "Steppen" und wahlweise mit F8 oder weiter mit F7 solange die einzelnen Anweisungen durchsteppen bis du an die Zeile kommst welche dafür Verantwortlich ist das entweder nichts passiert oder der weitere Ablauf abbricht. |
Re: Wie kann ich exe.log Files für mein Program erstellen?
danke, habs gemacht und festgestellt, dass ich den create constructor zu spät (also bereits nach add befehlen definiert habe. hab ihn jetzt "versetzt" und es geht... :thumb:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:15 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-2025 by Thomas Breitkreuz