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

Вниз

Размер любого файла   Найти похожие ветки 

 
dprimakov   (2004-07-29 19:43) [0]

Здравствуйте! Извините за ламерский вопрос, но я не могу узнать размер файла(любого), есть функция GetFileSize, но как ею пользоваться никак в толк не возьму.


 
Palladin ©   (2004-07-29 19:45) [1]

А для не любого значит можешь?


 
_student   (2004-07-29 19:46) [2]

FileStream может возвращать размер


 
Fay ©   (2004-07-29 20:49) [3]

GetFileSize/GetFileSizeEx используется в тех случаях, когда есть дескриптор файла, полученый от CreateFile. Второй параметр - адрес переменной (можно передать nil), куда складывать старшую часть значания, т.к. файл может быть больше 4Gb.

Пример.

var
 h : Cardinal; // Дескриптор файла
 sz : Cardinal; // Размер файла
begin
 h := CreateFile("c:\boot.ini", GENERIC_READ or GENERIC_WRITE, FILE_SHARE_READ, nil, OPEN_EXISTING, 0, 0);
 if h = INVALID_HANDLE_VALUE {Cardinal(-1)} then RaiseLastOSError;
 sz := GetFileSize(h, nil);
....
 CloseHandle(h);


 
Almaz ©   (2004-07-29 20:58) [4]

В общем случае (в т.ч. когда файл > 4 Gb) функция будет выглядеть примерно так:

function FileSize(FileName: String): Int64;
var
 FileHandle: Cardinal;
begin
 Result := -1;
 FileHandle := CreateFile(PChar(FileName), GENERIC_READ, 0, nil,
   OPEN_EXISTING, 0, 0);
 if FileHandle <> INVALID_HANDLE_VALUE then
 begin
   LARGE_INTEGER(Result).LowPart := GetFileSize(FileHandle,
     @LARGE_INTEGER(Result).HighPart);
   if (LARGE_INTEGER(Result).LowPart = $FFFFFFFF) and
      (GetLastError <> NO_ERROR) then Result := -1;
   CloseHandle(FileHandle);
 end;
end;


Удачи.


 
Fay ©   (2004-07-29 21:02) [5]

2Almaz ©   (29.07.04 20:58) [4]

Раз уж пошла такая пьянка, то можно покурить GetFileSizeEx.


 
Almaz ©   (2004-07-29 21:10) [6]


> Fay ©   (29.07.04 21:02) [5]
> 2Almaz ©   (29.07.04 20:58) [4]
>
> Раз уж пошла такая пьянка, то можно покурить GetFileSizeEx.

Покурить можно, но от этого GetFileSizeEx в Win9x не появится, ибо он там не поддерживается, а автора вопроса, как видно из заголовка, интересует именно Win9x.

Удачи.


 
Fay ©   (2004-07-29 21:29) [7]

2Almaz ©   (29.07.04 21:10) [6]
Точно, я и забыл 8(. Каюсь.


 
panov ©   (2004-07-30 09:19) [8]

FindFirst-->TSearchRec



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

Форум: "Основная";
Текущий архив: 2004.08.15;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.032 c
1-1091044820
Lego
2004-07-29 00:00
2004.08.15
Как сохранить Canvas, а потом загрузить и продолжить работу ?


3-1090559854
korvin
2004-07-23 09:17
2004.08.15
Поиск в базе like


14-1091193438
dtm
2004-07-30 17:17
2004.08.15
А книжечку по SQL Server 2К присоветуйте, а?


3-1090241722
Григорьев Антон
2004-07-19 16:55
2004.08.15
Формат хранения данных в БД


3-1090418346
Delf
2004-07-21 17:59
2004.08.15
Откат изменений в ClientDataSet после вызова ApplyUpdates





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