Ich habe folgende Funktion aus dem Netz kopiert, um zu prüfen, ob ich in einen Pfad schreiben kann oder nicht:
Delphi-Quellcode:
//hier schauen wir nach, ob wir Dateien ins Programmverzeichnis schreiben können
Function IsFileWritetable(const FileName: String): Boolean;
var
FileHandle : Cardinal; //18.02.19 -> war vorher integer
OldErrorMode: Cardinal;
begin
OldErrorMode := SetErrorMode(SEM_FAILCRITICALERRORS);
try
FileHandle := FileOpen(FileName, fmOpenWrite);
result := (FileHandle >= 0);
if result then begin
FileClose(fileHandle);
end;
finally
SetErrorMode(OldErrorMode);
end;
end;
Mit dem 10.3.1 schlug Delphi vor, das Filehandle von Integer auf Cardinal zu ändern.
Seitdem bekomme ich die Meldung im Programm "Zugriff verweigert".
Hintergrund:
Ich habe ein Programm, welches normalerweise ins Programmverzeichnis installiert wird. Danach wird die Registrierung ins Roaming Verzeichnis geschrieben.
Hier benötige ich die Abfrage, ob ich schreiben darf.
Das Programm kann aber auch auf ein Netzlaufwerk gelegt werden, wo die User dann nur einen Link nutzen müssen. Hier sollte in das Verzeichnis geschrieben werden können, wo auch das Programm liegt.
Wie würdet ihr das lösen bzw. mit welcher Funktion? Vielleicht gibt es etwas mit TFile, TPath o.ä.?