Thema: Delphi Dateisperre freigeben

Einzelnen Beitrag anzeigen

mumu

Registriert seit: 28. Okt 2003
Ort: Bamberg
519 Beiträge
 
#3

Re: Dateisperre freigeben

  Alt 8. Sep 2005, 13:38
jo, hab ich schon gemacht, hat sich aber noch net gemeldet

naja, ich bin jedenfalls schon so weit:

Delphi-Quellcode:
var hFile : Cardinal;
    filename : string;
    FileSizeLow : Cardinal;
    FileSizeHigh: ^Cardinal;
    error : Cardinal;
begin
  hFile := CreateFile(pchar(fileName),
                   GENERIC_READ,
                   FILE_SHARE_READ or FILE_SHARE_WRITE,
                   nil,
                   OPEN_EXISTING,
                   FILE_ATTRIBUTE_NORMAL,
                   0);
  error := GetLastError();
  ShowMessage(inttostr(error));

  GetMem(FileSizeHigh, SizeOf(Cardinal));
  try
    FileSizeLow := GetFileSize(hFile, FileSizeHigh);
    
    if UnLockFile(hFile, 0, 0, FileSizeLow, FileSizeHigh^) = false then
    begin
      error := GetLastError();
      ShowMessage(inttostr(error));
    end;
  finally
    FreeMem(FileSizeHigh);
  end;
naja also createfile funktioniert ohne probleme, bekomme da keinen fehler.
bei unlockfile jedoch erhalte ich fehlercode: 158
ERROR_NOT_LOCKED
158 The segment is already unlocked.

Die angegebene Datei ist 100 pro gelockt. Das problem ist halt das unlockfile nur bereiche einer datei freigibt, jedoch nicht die Datei als ganze. Da jedoch nur die gesamte Datei gesperrt ist und nicht nur ein bereich, wird unlockfile nicht funktionieren, oder?

jemand noch irgendwelche tipps?
  Mit Zitat antworten Zitat