Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Problem mit TJvLogFile (https://www.delphipraxis.net/115513-problem-mit-tjvlogfile.html)

divBy0 13. Jun 2008 08:50


Problem mit TJvLogFile
 
Liste der Anhänge anzeigen (Anzahl: 1)
Guten Morgen!

In meinem Projekt nutze ich von den JEDIs die JvLogFile. Allerdings wirft die mir sporadisch einen Fehler beim Programmstart (Siehe Anhang).

Im FormCreate lege ich den Pfad für das Logfile fest und aktiviere die Komponente.

Delphi-Quellcode:
procedure TMainform.FormCreate(Sender: TObject);
var
  path: Array[0..MAX_PATH] of Char;
begin
  SHGetFolderPath(0, CSIDL_COMMON_APPDATA, 1, 0, @path[0]);
  commonAppDataPath := path+'\Run Automation\BDE\';

  JvLog.FileName := commonAppDataPath+'log.txt';
  JvLog.Active := true;
  JvLog.AutoSave := true;
  JvLog.Add('SYSTEM', 'Programm gestartet');
  ...
end;
Der Fehler passiert an dieser Stelle beim Speichern.

Delphi-Quellcode:
procedure TJvLogFile.SaveToFile(FileName: TFileName);
var
  Stream: TFileStream;
begin
  Stream := TFileStream.Create(FileName, fmCreate or fmShareExclusive); // <-- Hier kracht es!
  try
    SaveToStream(Stream);
  finally
    Stream.Free;
  end;
end;
Die Datei ist allerdings nirgends sonst geöffnet. Kennt das Problem jemand? Oder besser: Kennt jemand eine Lösung?

Gruß :dp:

Aurelius 13. Jun 2008 09:02

Re: Problem mit TJvLogFile
 
Wir die Log-Datei denn zwischendurch benutzt und nicht wieder freigegeben bzw. wird sie vielleicht beim Starten nicht richtig freigegeben?

divBy0 13. Jun 2008 09:07

Re: Problem mit TJvLogFile
 
Die Logdatei wird nur durch die Komponente selbst benutzt. Ich gehe davon aus, dass diese die Datei freigibt. Die Komponente ist zur Designtime erstellt worden. Dann sollte die eigentlich beim Beenden (Destroy) die Datei freigeben oder nicht?

Werde mal im JEDI-Code suchen... Mich wundert es halt, dass der Fehler nicht regelmäßig auftritt.

Aurelius 13. Jun 2008 09:12

Re: Problem mit TJvLogFile
 
Der Fehler kommt beim Programmstart? Ich könnte mir das so erklären:
1.) Du aktivierst LogFile beim Start und greifst drauf zu
2.) da AutoSave an ist könnte ich mir vorstellen dass dann SaveToFile aktiv ist wenn du beim Start die Datei noch bgeöffnet hast
3.) nun will die Speicher-Prozedur schreiben --> wenn die Datei allerdings noch offen ist geht das nat. nicht, es knallt.

PS: nutzt du .Destroy? Dann lieber .Free!

divBy0 13. Jun 2008 09:42

Re: Problem mit TJvLogFile
 
Ich muss mir das mal genauer anschauen...


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:31 Uhr.

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