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 |