Windows 7 und 10, Lazarus 1.6x und 1.8RC3
Über eine FileListBox wird eine Datei ausgewählt, geöffnet und in einem Memo angezeigt.
Code: Alles auswählen
var
str2: TStringList;
begin
..
Arbeitsverzeichnis := INIDat.ReadString('Arbeitspfad','Pfad','C:\ ');
FileListBox1.Directory := Arbeitsverzeichnis;
Datei := extractFilename(FileListBox1.FileName);
...
Str2 := TStringList.Create;
try
Str2.LoadFromFile(Datei); //bricht hier ab und springt zu ..free
Memo1.Text := STr2.Text;
...
finally
Str2.Free;
end;
....
Funktioniert auch wunderbar, solange sich die Datei nicht in einem Netzlaufwerk auf dem Datenserver oder eines NAS oder in einem Cloude-Verzeichnis befinden.
Dann wird mit dieser allseits bekannten Fehlermeldung abgebrochen:
Code: Alles auswählen
Unable to open file ...
Press OK to ignore...
Press cancel to kill ...
Bei OK passiert nichts, bei Cancel wird das Programm beendet.
Die zu öffnenden Dateien stammen aus einem Auslesegerät.
Sie werden vom gleichen Benutzer (Admin-Rechte) mit dem ich das Programm ausführe, abgelegt.
Es gibt keine Zugriffsbeschränkungen bei den Dateien, werden ja auch nur gelesen.
Das Programm selbst mit höchsten Rechten zu compilieren oder als Admin auszuführen bringt nichts.
Kopiere ich die Dateien vom Netzlaufwerk auf ein lokales Verzeichnis, lassen sie sich problemlos öffnen/lesen.
Prakmatisch könnte ich das lösen, indem ich die zu öffnende Datei einfach temporär ins lokale Programmverzeichnis mit CopyFile kopiere,
lese und dann wieder lösche.
Aber warum geht das nicht direkt auf dem Netzlaufwerk?