Hhhmmmm, so ganz scheint der Code von Nico mein Problem nicht zu lösen.
Ich will ja testen, ob eine Datei in ein Verzeichnis geschrieben werden kann. Demzufolge habe ich shmias Code mit Nicos Code kombiniert.
Delphi-Quellcode:
function TMainDlg.CheckWriteSuccess(Ordner: String) : Boolean;
var
filename : string;
hnd : THandle;
const
TmpDateiname = 'mytmp.$$$';
begin
filename := IncludeTrailingBackslash(ordner) + TmpDateiname;
DeleteFile(PChar(filename));
hnd := CreateFile(PChar(filename),GENERIC_WRITE, 0, nil, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
if hnd <> INVALID_HANDLE_VALUE then
begin
CloseHandle(hnd);
Result := CheckAccessToFile(GENERIC_WRITE, filename); // <--
DeleteFile(PChar(filename));
end
else
Result := False;
If Result = false then
Showmessage('In den angegebenen Ordner "' + Ordner + '" kann die Software aufgrund eingeschränkter Zugriffsrechte nicht schreiben.');
end;
procedure TMainDlg.SaveDialogCanClose(Sender: TObject;
var CanClose: Boolean);
begin
CanClose := CheckWriteSuccess(ExtractFilePath(SaveDialog.Filename));
end;
Wenn also im SaveDialog eine Datei angegeben wird, "schreibt shmia" die Testdatei und "Nico schaut", ob die vorhanden ist. Das will bei mir nicht klappen. CheckAccessToFile() gibt true zurück, obwohl die Datei nicht vorhanden ist... Oder habe ich jetzt einen Denkfehler?