Главная страница
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.48 MB
Время: 0.046 c
14-1098065200
Думкин
2004-10-18 06:06
2004.11.07
С днем рождения! 18 октября


1-1098360428
AlexG
2004-10-21 16:07
2004.11.07
Как мне спрятать свойство?


14-1098201489
kaZaNoVa
2004-10-19 19:58
2004.11.07
Замедление .. как реализовать ?


14-1097705686
Piter
2004-10-14 02:14
2004.11.07
Позор... Россия 1 - 7 Португалия


14-1097830782
Prohodil Mimo
2004-10-15 12:59
2004.11.07
Как в ВинХР запретить юзеру устанавливать программы?