Ich fordere über das Windows-Message-System von meiner Serverapplikation eine Datei an. Die Serverapplikation fertigt eine Kopie dieser Datei mit CopyFile an und schickt mir den Pfad dieser Datei wiederum übers Messaging-System. Ich öffne diese Datei per TStringlist.LoadFromFile - und was müssen meine brechenden Augen sehen?
Zitat:
Erste Gelegenheit für
Exception bei $7C81EB33.
Exception-Klasse EFOpenError mit Meldung 'Datei D:\Eigene Dateien von Superuser\tut_nichts_zur_sache\published\log0.log. txt kann nicht geöffnet werden. Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess verwendet wird'. Prozess Core.exe (1676)
Sollte die Datei nicht wieder frei sein, wenn CopyFile zurückkehrt? Was man hier sieht, spricht fürs gegenteil:
Delphi-Quellcode:
//generate filenames
old := BaseDir + IncludeTrailingPathDelimiter(LOGDIR) + Logs[LogIdent];
new := BaseDir + IncludeTrailingPathDelimiter(PUBDIR) + Logs[LogIdent];
//make public file
CopyFile(PChar(old),PChar(new),false); //CopyFile wird ausgeführt
//fill formal data
LI.YourHandle := AppHandle;
LI.LogIdentifier := LogIdent;
//write formal data
MS := TMemoryStream.Create;
try
MS.Write(LI,SizeOf(LI));
MS.Write(new[1], length(new));
//fill copydatastruct
CpDt.dwData := Integer(ltReadAnswer);
CpDt.cbData := MS.Size;
CpDt.lpData := MS.Memory;
TLogMessageThread.Create(WHandle,AppHandle,CpDt,ThreadLog); //Nachricht wird vershickt
finally
MS.Free;
end;
Falls es nicht mein Fehler ist, und ich den übersehe: Womit ersetze ich CopyFile, um es auf jeden Fall "blocking" zu haben?
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1