Forum: Object-Pascal / Delphi-Language
Delphi
by himitsu,
18. Mai 2010
procedure TLTC2440_DataList.LoadData(AFileName: String);
var AHStream : THandleStream;
AFileHandle : THandle;
begin
FFileName := AFileName;
Clear;
AFileHandle := CreateFile(PChar(AFileName), GENERIC_READ, FILE_SHARE_READ or FILE_SHARE_WRITE,
0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
if AFileHandle <> INVALID_HANDLE_VALUE then begin
FFileText := TStringList.Create;
Forum: Object-Pascal / Delphi-Language
Delphi
by himitsu,
18. Mai 2010
Dann dürfte Notepad es auch nicht lesen können.
Der andere Prozess scheint also die nötigen Sharing-Rechte (zumindestens zum Lesen) zu geben.
Allerdings hat der andere Prozess die Datei eben schon zum Schreiben geöffnet, welches halt von TFileString nicht erlaubt wird.
Aber im Prinzip hast du Recht.
Wenn der andere Prozess keine Sharing-Rechte freigibt, dann ist das eben so.
Wenn mehrere...
Forum: Object-Pascal / Delphi-Language
Delphi
by himitsu,
18. Mai 2010
TFileStream (wird auch bei LoadFromFile in TStrings/TStringList) verwendet, läßt beim Auslesen nur Lesezugriffe anderer Anwendungen zu.
Diese Datei ist bei dir aber im Schreibzugriff geöffnet.
Lösung: THandleStream + CreateFile und dort fremde Schreibrechte erlauben
(ShareMode = FILE_SHARE_READ or FILE_SHARE_WRITE) und dann TStringList+LoadFromStream
(bei TFileStream fehlt das...