Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.08.2008, 00:01   #1
photozaz
Пользователь
 
Регистрация: 05.04.2008
Сообщений: 66
По умолчанию Как узнать размер файла?

Подскажите, как можно узнать размер файла, я пользовался такой функцией, приведенной ниже, но возникла небольшая проблема: при определении размера файла с расширением *.iso (4,6 гб) выдает какойто левый размер, толи файл большой, толи *.iso не хочет определять... может подправить че надо..?

Код:
procedure Tform1.doit();
var

f1, f2: file of byte;
sizez: real;
begin
{$I-}
try
AssignFile (f1, Edit1.Text);
Reset(f1);
sizez:= Trunc(FileSize(f1));
if sizez<1000 then
begin
Label2.caption := FloatTostr(trunc(sizez*100)/100)+ ' bayt';
end;

if (sizez<1000000) and (sizez>=1000)  then
begin
Label2.caption := FloatTostr(trunc(sizez*100/1024)/100) + ' Kb';
end;

if (sizez<1000000000) and (sizez>1000000) then
begin
Label2.caption := FloatTostr(trunc(sizez*100/1048576)/100)+ ' Mb';
end;

if sizez>=1000000000 then
begin
Label2.caption := FloatTostr(trunc(sizez*100/1073741824)/100)+ ' Gb';
end;

CloseFile(f1);
finally;
end;

end;
photozaz вне форума Ответить с цитированием
Старый 01.08.2008, 00:16   #2
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

FileSize - Integer !!
WinAPI GetFileSize(HFILE, POINTER): DWORD; Думаю лимиты двух типов говорят сами за себя Юзайте Из SysUtils открытие файла кажется OpenFile далее получите Integer - хендл файла открытого далее выше указанной функцией получаите DWORD что и хранит ваш 4,6 гиг...
BOBAH13 вне форума Ответить с цитированием
Старый 01.08.2008, 00:24   #3
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

GetFileSizeEx
4.6 Gb в DWORD не влезет даже без знака.
B_N вне форума Ответить с цитированием
Старый 01.08.2008, 00:25   #4
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,689
По умолчанию

Или так
Код:
function FileSize_(FName: string): int64;
var
  ff: _win32_find_dataa;
  hFind: hwnd;
begin
  hFind := FindFirstfile(pchar(FName), ff);
  if (INVALID_HANDLE_VALUE <> hFind) then
  result := ff.nFileSizeLow
end;
eoln вне форума Ответить с цитированием
Старый 01.08.2008, 00:29   #5
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Не
Цитата:
Сообщение от eoln Посмотреть сообщение
Код:
  result := ff.nFileSizeLow
, а что-то вроде:
Код:
  result := (ff.nFileSizeHigh shl 32) + ff.nFileSizeLow
B_N вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Узнать размер и длину песни Манжосов Денис :) Мультимедиа в Delphi 5 27.12.2011 03:23
Размер файла eoln Общие вопросы Delphi 2 13.07.2008 01:44
Узнать размер рабочего стола Dj_smart Общие вопросы Delphi 3 26.03.2008 18:39
Как мне узнать размер файла в байтах? satana Общие вопросы Delphi 4 26.09.2007 16:59
Как узнать размер массива мандарин Общие вопросы Delphi 2 30.05.2007 19:18