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

Вниз

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

 
Ilya____   (2004-10-19 15:35) [0]

Подскажите как правильно сделать.
У меня такая функция

function GetFileSize(const FileName: TFileName): Longint;
var
 SearchRec: TSearchRec;
begin
 try
   if FindFirst(FileName, faAnyFile, SearchRec) = 0 then
     Result := SearchRec.Size
   else
     Result := -1;
 finally
   FindClose(SearchRec);
 end;
end;

Но если размер файла больше 2147483647 байт,
то функция возвратит неправильное значение.
Как быть ?


 
clickmaker ©   (2004-10-19 15:43) [1]

FindFirstFile

WIN32_FIND_DATA -> nFileSizeHigh, nFileSizeLow


 
Ilya___   (2004-10-19 16:16) [2]

Хотелось бы по подробнее


 
Anatoly Podgoretsky ©   (2004-10-19 16:33) [3]

Ilya___   (19.10.04 16:16) [2]
В справке очень подробно, что именно из нее не понятно?


 
Ilya___   (2004-10-19 17:43) [4]

Если размер файла больше 2147483647 байт,
тогда функция аозвращает неправильное значение.
Как сделать чтобы функция выдавала правильное
значение ?


 
Palladin ©   (2004-10-19 18:40) [5]

FindFirstFile

WIN32_FIND_DATA -> nFileSizeHigh, nFileSizeLow


 
clickmaker ©   (2004-10-19 18:42) [6]

похоже, в цикл вошли...


 
Palladin ©   (2004-10-19 18:55) [7]

:)))


 
begin...end ©   (2004-10-19 19:01) [8]


> Ilya____   (19.10.04 15:35)

К тому же тип результата твоей функции не позволяет это сделать.


 
DVM ©   (2004-10-19 19:05) [9]


> Ilya____   (19.10.04 15:35)  

Вот для размера папки, для файла переделаешь сам.

function GetDirectorySize(const Path: string): Int64;
var
 FD : TWin32FindData;
 FH : THandle;
 TempSize: TULargeInteger;
begin
 Result := 0;
 if Path="" then exit;
 if not(DirExists(Path)) then exit;
 FH := FindFirstFile( PChar( Path + "*.*" ), FD );
 repeat
   if (FH<>INVALID_HANDLE_VALUE) and (FD.cFileName <> string(".")) and
                                              (FD.cFileName<>string("..")) then
     begin
       if (FILE_ATTRIBUTE_DIRECTORY and FD.dwFileAttributes) <> 0 then
         Inc(Result, GetDirectorySize(Path + FD.cFileName + "\"))
       else
         begin
           TempSize.LowPart := FD.nFileSizeLow;
           TempSize.HighPart := FD.nFileSizeHigh;
           Inc(Result, TempSize.QuadPart);
         end;
     end;
 until FindNextFile(FH,FD) = false;
 FindClose(FH);
end;



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

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

Наверх




Память: 0.49 MB
Время: 0.058 c
14-1098212687
KilkennyCat
2004-10-19 23:04
2004.11.07
Старье, но прикольно


14-1098182123
Lingo
2004-10-19 14:35
2004.11.07
MSDN Download


6-1093698179
TrogWar
2004-08-28 17:02
2004.11.07
Вот такая проблема с посылкой строки сокетом...


1-1098341319
Антоныч
2004-10-21 10:48
2004.11.07
ComboBox и индекс элемента в выпадающем списке


14-1098089058
Undert
2004-10-18 12:44
2004.11.07
Проблема с MYSQL