Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.08.15;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.042 c
9-1083399484
Smoke_Gomel
2004-05-01 12:18
2004.08.15
Обращение к свойствам спрайта через процедуру другого спрайта.


3-1090178737
Комбинатор
2004-07-18 23:25
2004.08.15
Как узнать прошёл ли commit или нет...


4-1089046492
ИМХО
2004-07-05 20:54
2004.08.15
CLSID


14-1090427172
Romkin
2004-07-21 20:26
2004.08.15
Sale!


1-1091019935
GrigP
2004-07-28 17:05
2004.08.15
При запуске проекта появляется окно CPU