Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Zugriff auf Datei gescheitert, von anderem Prozess verwendet (https://www.delphipraxis.net/126302-zugriff-auf-datei-gescheitert-von-anderem-prozess-verwendet.html)

Berlinermauer 22. Dez 2008 12:57


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:
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
dann im OnCreate Get_Logdir.

Delphi-Quellcode:
Log.Lines.SavetoFile(s);
<-- Hier kommt der Fehler

DeddyH 22. Dez 2008 13:00

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.

khh 22. Dez 2008 13:03

Re: Zugriff auf Datei gescheitert, von anderem Prozess verwe
 
Zitat:

Zitat von DeddyH
Zum Einen sollte man im eigenen Programmverzeichnis bzw. Unterordnern davon nicht schreiben,


OT: kannst du das bitte mal begründen.


Gruss Kh

toms 22. Dez 2008 13:04

Re: Zugriff auf Datei gescheitert, von anderem Prozess verwe
 
Zitat:

Zitat von khh
Zitat:

Zitat von DeddyH
Zum Einen sollte man im eigenen Programmverzeichnis bzw. Unterordnern davon nicht schreiben,

OT: kannst du das bitte mal begründen.

Da nicht alle Schreibrechte im Programmverzeichnis haben.

DeddyH 22. Dez 2008 13:05

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.

khh 22. Dez 2008 13:06

Re: Zugriff auf Datei gescheitert, von anderem Prozess verwe
 
Zitat:

Zitat von DeddyH
Ja, kann ich. Wenn Du unter XP/Vista als Nicht-Admin unterwegs bist, hast Du schlicht keine Rechte dazu.

also schreibts du ins user -verzeichnis?
Das ist unter Vista etwas kompliziert, oder ?

DeddyH 22. Dez 2008 13:08

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).

khh 22. Dez 2008 13:09

Re: Zugriff auf Datei gescheitert, von anderem Prozess verwe
 
Zitat:

Zitat von DeddyH
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).

muss ich mir mal zu gemüte führen

Meflin 22. Dez 2008 13:12

Re: Zugriff auf Datei gescheitert, von anderem Prozess verwe
 
Zitat:

Zitat von khh
Das ist unter Vista etwas kompliziert, oder ?

Ganz im Gegenteil. Wenn du mit mangelnden Rechten in Vista ins Programm-Verzeichnis schreiben willst, landet das sogar ganz automatisch im Roaming-Ordner deines User-Verzeichnisses :mrgreen:

Uwe Raabe 22. Dez 2008 13:15

Re: Zugriff auf Datei gescheitert, von anderem Prozess verwe
 
Zitat:

Zitat von Berlinermauer
Delphi-Quellcode:
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
dann im OnCreate Get_Logdir.

Delphi-Quellcode:
Log.Lines.SavetoFile(s);
<-- Hier kommt der Fehler

Du scheinst hier die Variable Log in unterschiedlichen Ausprägungen zu benutzen: Auf der einen Seite wird sie mit AssignFile und Rewrite wie ein File oder TextFile verwendet, auf der anderen Seite aber mit Log.Lines.SaveToFile wie ein TMemo. Vermutlich handelt es sich um zwei verschiedene Variablen, aber das geht aus den Code-Snippets nicht hervor.

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.


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