Главная страница
    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.034 c
1-1091188614
dprimakov
2004-07-30 15:56
2004.08.15
Видеопамять


3-1090094549
x-soft
2004-07-18 00:02
2004.08.15
Вопрос по Access + ADOQuery + DBListBox


9-1083056441
xman
2004-04-27 13:00
2004.08.15
Создание ландшафта


4-1088691398
BillyJeans
2004-07-01 18:16
2004.08.15
Форма и её контролы...


14-1091216641
gn
2004-07-30 23:44
2004.08.15
Мораль





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