Форум: "WinAPI";
Текущий архив: 2006.03.12;
Скачать: [xml.tar.bz2];
ВнизWin32FindData ! Найти похожие ветки
← →
psa247 © (2005-12-19 15:33) [0]Подскажите, как правильно закрыть хэндл ?
function TF.Get_File_size(name : string): INT64;
var FD : TWin32FindData;
FH : THandle;
begin
EUID:= "{D39E438C-1C08-4D27-9039-FE781A512700}";
Result:= -1;
FH:= FindFirstFile(PChar(name), FD);
if FH = INVALID_HANDLE_VALUE then exit;
try
Result:= FD.nFileSizeHigh;
Result:= Result shl 32;
Result:= Result + FD.nFileSizeLow;
finally
try
FindClose(FH);
//CloseHandle(FH); except
ShowMessage(SysErrorMessage(GetLastError));
end;
end;
end;
GetLastError дает 0
← →
psa247 © (2005-12-19 15:35) [1]Забыл: CloseHandle дает External exception C0000008
← →
begin...end © (2005-12-19 15:40) [2]CloseHandle здесь не нужно. Нужно только FindClose.
> Result:= FD.nFileSizeHigh;
> Result:= Result shl 32;
> Result:= Result + FD.nFileSizeLow;
Int64Rec(Result).Lo := FD.nFileSizeLow;
Int64Rec(Result).Hi := FD.nFileSizeHigh;
Так красивее, ИМХО.
← →
psa247 © (2005-12-19 15:43) [3]
> begin...end ©
На FindClose пишет, что параметры не идентичны.
← →
begin...end © (2005-12-19 15:45) [4]> psa247 © (19.12.05 15:43) [3]
Это потому, что вызывается FindClose из SysUtils, а здесь нужноWindows.FindClose(FH)
.
← →
psa247 © (2005-12-19 15:52) [5]Ёлы-палы... :)
> begin...end ©
Спасибо.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2006.03.12;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.013 c