Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
Delphi 10.4 Sydney
|
AW: Simultaner Zugriff auf Datei
2. Jun 2014, 19:03
Ich hab' mal ne Zeitlang das verwendet, dann aber wieder verworfen. Weiß aber nicht mehr warum?
Delphi-Quellcode:
function FileInUse(const FileName: string): boolean;
var
Success: Cardinal;
begin
Result := false;
if FileExists(FileName) then
begin
Success := CreateFile(PChar(FileName),
GENERIC_READ, 0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
Result := Success = INVALID_HANDLE_VALUE;
if not Result then
CloseHandle(Success);
end;
end;
procedure Wait50;
var
ATime: Cardinal;
begin
ATime := GetTickCount;
repeat
until GetTickCount - ATime > 50;
Application.ProcessMessages;
end;
function CanOpenFile(const FileName: string): boolean;
var
TryCount: integer;
begin
Result := true;
if FileInUse(FileName) then
begin
TryCount := 0;
repeat
Wait50;
Inc(TryCount);
Result := not FileInUse(FileName);
until Result or (TryCount = 20);
end;
if not Result then
MessageDlg('Zugriff auf ' + FileName + ' verweigert.', mtError, [mbOK], 0);
end;
|
|
Zitat
|