Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.03.12;
Скачать: CL | DM;

Вниз

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 вся ветка

Текущий архив: 2006.03.12;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.05 c
2-1140342145
keyser
2006-02-19 12:42
2006.03.12
Сервисы в windows 98 и Me


15-1139927792
oldman
2006-02-14 17:36
2006.03.12
"Я офигеваю, дорогая редакция..." (извините...)


10-1114366435
ink
2005-04-24 22:13
2006.03.12
Как в TWebBrowser поменять путь загрузки рисунка.


1-1139401625
Huk
2006-02-08 15:27
2006.03.12
Как получить список фонтов в WideString?


15-1140291000
kaZaNoVa
2006-02-18 22:30
2006.03.12
Обращение к VCL-контролам из потока