Einzelnen Beitrag anzeigen

Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Simultaner Zugriff auf Datei

  Alt 2. Jun 2014, 18: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;
  Mit Zitat antworten Zitat