Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2004.11.07;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.04 c
8-1091859907
k-sergey
2004-08-07 10:25
2004.11.07
Загружаю в TImage Gif-картинку прога вылетает....


14-1098095756
Igorek
2004-10-18 14:35
2004.11.07
Визуальное проектирование таблиц и отношений в БД


4-1096808596
Scorpion
2004-10-03 17:03
2004.11.07
Как изменить приоритет потока созданного другим процессом


3-1097491658
Jann
2004-10-11 14:47
2004.11.07
запрос и результат


14-1097728339
Dmitriy O.
2004-10-14 08:32
2004.11.07
Разработка ПО сторонними организациями.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский