Subversion Repositories checksum-tools

Rev

Rev 6 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 6 Rev 17
Line 20... Line 20...
20
 
20
 
21
uses
21
uses
22
  Windows, SysUtils;
22
  Windows, SysUtils;
23
 
23
 
24
procedure MyAssignFile(var hFile: THandle; filename: string);
24
procedure MyAssignFile(var hFile: THandle; filename: string);
-
 
25
var
-
 
26
  lastErr: DWORD;
25
begin
27
begin
-
 
28
  if Copy(filename, 2, 1) = ':' then filename := '\\?\' + filename; // To allow long filenames
26
  hFile := CreateFile(PChar(filename), GENERIC_READ or GENERIC_WRITE, FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING, FILE_ATTRIBUTE_READONLY, 0);
29
  hFile := CreateFile(PChar(filename), GENERIC_READ or GENERIC_WRITE, FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING, FILE_ATTRIBUTE_READONLY, 0);
27
  if hFile = INVALID_HANDLE_VALUE then
30
  if hFile = INVALID_HANDLE_VALUE then
28
  begin
31
  begin
-
 
32
    lastErr := GetLastError;
29
    if GetLastError = ERROR_ACCESS_DENIED then
33
    if lastErr = ERROR_ACCESS_DENIED then
30
    begin
34
    begin
31
      hFile := CreateFile(PChar(filename), GENERIC_READ, FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING, FILE_ATTRIBUTE_READONLY, 0);
35
      hFile := CreateFile(PChar(filename), GENERIC_READ, FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING, FILE_ATTRIBUTE_READONLY, 0);
32
      if hFile = INVALID_HANDLE_VALUE then RaiseLastOSError;
36
      if hFile = INVALID_HANDLE_VALUE then RaiseLastOSError;
33
    end
37
    end
34
    else RaiseLastOSError;
38
    else RaiseLastOSError(lastErr);
35
  end;
39
  end;
36
end;
40
end;
37
 
41
 
38
procedure MyReset(hFile: THandle);
42
procedure MyReset(hFile: THandle);
39
begin
43
begin