![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
GetFileSize
Bober © (2006-08-08 21:33:00)Есть ли в зале люди, которые могли бы подсказать как использовать функцию GetFileSize?
Джо (2006-08-09 01:39:00) [1]> [6] guav © (09.08.06 00:22)
Истинно так :)
guav (2006-08-09 00:22:00) [2]
> if (Sz.L = INVALID_FILE_SIZE) and (GetLastError = 0) then
> RaiseLastOSError;
if (Sz.L = INVALID_FILE_SIZE) and (GetLastError <>0) then
RaiseLastOSError;
guav (2006-08-09 00:21:00) [3]Джо © (08.08.06 22:56) [4]
> if Sz.L = INVALID_FILE_SIZE then
> RaiseLastOSError;
"Note that if the return value is INVALID_FILE_SIZE, an application must call GetLastError to determine whether the function has succeeded or failed. The reason the function may appear to fail when it has not is that lpFileSizeHigh could be non-NULL or the file size could be 0xffffffff. In this case, GetLastError will return NO_ERROR upon success."
if (Sz.L = INVALID_FILE_SIZE) and (GetLastError = 0) then
RaiseLastOSError;
Джо (2006-08-08 22:56:00) [4]
Sz: record
case Boolean of
True: (L,H: DWord);
False: (Value: Int64);
end;
...
Sz.L := GetFileSize (H,@Sz.H);
if Sz.L = INVALID_FILE_SIZE then
RaiseLastOSError;
ShowMessage (IntToStr(Sz.Value));
Но я не рекоммендую использовать эту функцию. Взамен предлагаю такой, вполне универсальный подход:
var
Sz: record
case Boolean of
True: (L,H: DWord);
False: (Value: Int64);
end;
Sr: TSearchRec;
...
if FindFirst(FileName,faAnyFile, SR) = 0 then
begin
Sz.L := SR.FindData.nFileSizeLow;
Sz.H := SR.FindData.nFileSizeHigh;
end;
FindClose (SR);
ShowMessage (IntToStr(Sz.Value));
Это даже лучше, чем GetFileSizeEx, ибо для нее требуется платформа не ниже Win2k.
Ketmar (2006-08-08 22:24:00) [5]наверное, могли бы.
Bober (2006-08-08 21:53:00) [6]Если есть, то не могли бы они помочь мне в этом пикантном вопросе?
Джо (2006-08-08 21:47:00) [7]Есть.