![]() |
Zugriff auf Datei gescheitert, von anderem Prozess verwendet
Hi, im Folgenden Code Speicher ich ein Memo als .log Datei.
Bekomme den Fehler, dass diese Datei angebl. von einem Anderen Prozess benutzt wird. Dies macht aber kein Sinn, da die Datei grad davor erstellt wurde, AntiVirus aus ist usw..
Delphi-Quellcode:
dann im OnCreate Get_Logdir.
procedure Get_Logdir;
begin if DirectoryExists (ExtractFilePath(ParamStr(0)) + 'Logs') then begin s := './logs/' + FormatDateTime('dd-mm-yyyy',Now) + '.log'; AssignFile(Log,s); rewrite(log); end
Delphi-Quellcode:
<-- Hier kommt der Fehler
Log.Lines.SavetoFile(s);
|
Re: Zugriff auf Datei gescheitert, von anderem Prozess verwe
Zum Einen sollte man im eigenen Programmverzeichnis bzw. Unterordnern davon nicht schreiben, zum Anderen fehlt da irgendwie ein CloseFile.
|
Re: Zugriff auf Datei gescheitert, von anderem Prozess verwe
Zitat:
OT: kannst du das bitte mal begründen. Gruss Kh |
Re: Zugriff auf Datei gescheitert, von anderem Prozess verwe
Zitat:
|
Re: Zugriff auf Datei gescheitert, von anderem Prozess verwe
Ja, kann ich. Wenn Du unter XP/Vista als Nicht-Admin unterwegs bist, hast Du schlicht keine Rechte dazu.
|
Re: Zugriff auf Datei gescheitert, von anderem Prozess verwe
Zitat:
Das ist unter Vista etwas kompliziert, oder ? |
Re: Zugriff auf Datei gescheitert, von anderem Prozess verwe
Ich hab kein Vista, aber das User-Verzeichnis zu ermitteln dürfte nicht schwerer sein als unter XP (es sei denn, da ist etwas an mir vorbeigegangen).
|
Re: Zugriff auf Datei gescheitert, von anderem Prozess verwe
Zitat:
|
Re: Zugriff auf Datei gescheitert, von anderem Prozess verwe
Zitat:
|
Re: Zugriff auf Datei gescheitert, von anderem Prozess verwe
Zitat:
Bemerkenswert ist aber, daß im Get_LogDir ein File geöffnet wird (warum?) und dieses anscheinen auch bleibt. Das hat allerdings zur Folge, daß die Datei gesperrt ist und somit ein nachfolgendes SaveToFile auf den gleichen Dateinamen schiefgehen muss. |
Re: Zugriff auf Datei gescheitert, von anderem Prozess verwe
![]() [edit] Zitat:
|
Re: Zugriff auf Datei gescheitert, von anderem Prozess verwe
Zitat:
|
Re: Zugriff auf Datei gescheitert, von anderem Prozess verwe
Moin,
was mir noch aufgefallen ist: Du prüfst zwar den vollen Pfad, benutzt dann aber zum Speichern einen relativen (./logs). Das kann auch schiefgehen. |
Re: Zugriff auf Datei gescheitert, von anderem Prozess verwe
Also ich wollte damit bezwecken, dass der Text nicht überschrieben sondern erweitert wird.
|
Re: Zugriff auf Datei gescheitert, von anderem Prozess verwe
Dann fallen mir spontan 2 Möglichkeiten ein: eine Stringlist erzeugen, alten Inhalt hineinladen und mit Addstrings anfügen oder Datei nicht mit Rewrite, sondern ggf. mit Append öffnen.
|
Re: Zugriff auf Datei gescheitert, von anderem Prozess verwe
Zitat:
Ergänzend sei gesagt: das genaue Verzeichnis ist nicht Roaming, sondern Local\VirtualStore und das funktioniert auch "nur" bei Anwendungen, die kein Vista-Manifest haben (oder allen die im Kompatibilitätsmoduis ausgeführt werden) :) |
Re: Zugriff auf Datei gescheitert, von anderem Prozess verwe
naja mit Append scheint auch nicht zu funktionieren.
Ich glaube aber es liegt daran dass ich bei jeder neuempfangenen ChatNachricht wieder den ganzen log reinschreib. weiß jemand wie ich es besser machen könnte? |
Re: Zugriff auf Datei gescheitert, von anderem Prozess verwe
Zitat:
|
Re: Zugriff auf Datei gescheitert, von anderem Prozess verwe
wenn ich statt "ReWrite", "Append" eingebe funktioniert es trotzdem noch nicht
|
Re: Zugriff auf Datei gescheitert, von anderem Prozess verwe
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
const sDateiname = 'C:\Test.txt'; //nur zum Testen var F: TextFile; begin AssignFile(F,sDateiname); {$I-} if FileExists(sDateiname) then Append(F) else Rewrite(F); {$I+} if IOResult = 0 then begin writeln(F,'Eine weitere Zeile'); CloseFile(F); end else ShowMessage(Format('IOResult = %d',[IOResult])); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:34 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