Главная страница
    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.044 c
14-1098112656
Никита
2004-10-18 19:17
2004.11.07
Опрос :-)


14-1097846076
Prohodil Mimo
2004-10-15 17:14
2004.11.07
Куда девается непотраченное электричество, выработанное ЭС ?


3-1097480718
Воробьев_Иван
2004-10-11 11:45
2004.11.07
Все программы созданные мной на Delhi7 отказались работать


14-1098322441
Думкин
2004-10-21 05:34
2004.11.07
С днем рождения! 21 октября


3-1097051951
GanibalLector
2004-10-06 12:39
2004.11.07
BLOB в ХП





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский