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

Вниз

GetFileSize   Найти похожие ветки 

 
Bober   (2006-08-08 21:33) [0]

Есть ли в зале люди, которые могли бы подсказать как использовать функцию GetFileSize?


 
Джо ©   (2006-08-08 21:47) [1]

Есть.


 
Bober   (2006-08-08 21:53) [2]

Если есть, то не могли бы они помочь мне в этом пикантном вопросе?


 
Ketmar ©   (2006-08-08 22:24) [3]

наверное, могли бы.


 
Джо ©   (2006-08-08 22:56) [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.


 
guav ©   (2006-08-09 00:21) [5]

Джо ©   (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;


 
guav ©   (2006-08-09 00:22) [6]


> if (Sz.L = INVALID_FILE_SIZE) and (GetLastError = 0) then
>   RaiseLastOSError;

if (Sz.L = INVALID_FILE_SIZE) and (GetLastError <> 0) then
 RaiseLastOSError;


 
Джо ©   (2006-08-09 01:39) [7]

> [6] guav ©   (09.08.06 00:22)

Истинно так :)



Страницы: 1 вся ветка

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

Наверх




Память: 0.48 MB
Время: 0.055 c
2-1154376390
Lexmark
2006-08-01 00:06
2006.08.27
Запуск программы на чужом компьютере


2-1154596971
lorn
2006-08-03 13:22
2006.08.27
XML ->PARSER


15-1154082799
Сергей_С
2006-07-28 14:33
2006.08.27
Как применить функцию из OBJ в проекте на VC++


1-1152862745
Calibr2
2006-07-14 11:39
2006.08.27
Как добавить таймер на форму в VBA редакторе


3-1150723850
Dust
2006-06-19 17:30
2006.08.27
Работа с блобами