Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Wie kann ich exe.log Files für mein Program erstellen? (https://www.delphipraxis.net/136805-wie-kann-ich-exe-log-files-fuer-mein-program-erstellen.html)

aaaaaaaaaa_10 8. Jul 2009 09:20


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:

Luckie 8. Jul 2009 10:13

Re: Wie kann ich exe.log Files für mein Program erstellen?
 
Zitat:

Zitat von aaaaaaaaaa_10
ich möchte mir log Files meines Programms ausgeben lassen.

Soll dein Programm während es läuft eine Logdatei anlegen und in diese schreiben oder willst du eine vorhandene Logdatei anzeigen? Eine etwas verständlichere Ausdrucksweise wäre recht hilfreich.

Andreas L. 8. Jul 2009 10:15

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.

Stormy 8. Jul 2009 10:15

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

aaaaaaaaaa_10 8. Jul 2009 10:25

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

Luckie 8. Jul 2009 10:32

Re: Wie kann ich exe.log Files für mein Program erstellen?
 
Zitat:

Zitat von aaaaaaaaaa_10
Ich habe einträge für den logfile zwischen {$IFDEF name} und {$ENDIF} eingebunden.

Zeig mal Code. Ich habe keine Ahnung, was du meinst oder was du gemacht hast.

aaaaaaaaaa_10 8. Jul 2009 10:34

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

aaaaaaaaaa_10 8. Jul 2009 10:38

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.

messie 8. Jul 2009 11:16

Re: Wie kann ich exe.log Files für mein Program erstellen?
 
Delphi-Quellcode:
if (not Assigned(Self)) then
     Exit;
Das ist ja eine interessante Anweisung. Wozu ist die gut?

Grüße, Messie

Edit: unsinnige Frage gestrichen

Stormy 8. Jul 2009 11:17

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:
dbg.Add('TKomMainWnd.DateiNameMittelwerte');
gesetzt und geguckt ob sie überhaupt ausgeführt wird?


Gruß
Stormy


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:58 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