DesiredAcces wird nach folgendem Schema befüllt (die Form hat checkboxen über die ich auswählen kann wie ich die Datei öffnen will):
Code:
procedure TformLockReadable.buttonOpenClick(Sender: TObject);
var
DesiredAccess: Cardinal;
ShareMode: Cardinal;
begin
if FileHandle<>INVALID_HANDLE_VALUE then exit;
DesiredAccess:=0;
if checkboxAccessRead.Checked then DesiredAccess:=DesiredAccess or GENERIC_READ;
if checkboxAccessWrite.Checked then DesiredAccess:=DesiredAccess or GENERIC_WRITE;
ShareMode:=0;
if checkboxShareRead.Checked then ShareMode:=ShareMode or FILE_SHARE_READ;
if checkboxShareWrite.Checked then ShareMode:=ShareMode or FILE_SHARE_WRITE;
FileHandle:=Integer(Windows.CreateFile(PChar(editDateinamen.Text),
DesiredAccess,
ShareMode,
nil,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
0)
);
//FileHandle:=FileOpen(editDateinamen.Text,fmOpenReadWrite or fmShareDenyNone);
if FileHandle=INVALID_HANDLE_VALUE then Showmessage(Format('Fehler beim Öffnen: %d',[GetLastError]));
EnableButtons;
ReadOnlyLocked:=False;
end;
Ich hab das ganze Testprojekt mal angehängt, als Delphi 2006 Version. Kann problemlos auf XE überführt werden, nur kam bei mir eine Meldung, dass ein Verweis nicht mehr gültig sei. Den einfach entfernen.
Edit: Sorry, musste sie nochmal kurz rausnehmen, ist jetzt wieder drin.