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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.12.2009, 00:06   #1
VIR1435
Пользователь
 
Регистрация: 28.09.2009
Сообщений: 19
По умолчанию как программно определить размер файла более 2 гб

Доброго времени суток!
Подскажите как можно программно определитьразмерфайла более 2гб
VIR1435 вне форума Ответить с цитированием
Старый 27.12.2009, 00:26   #2
Миша
Пользователь
 
Регистрация: 13.09.2007
Сообщений: 63
По умолчанию

Код:
var

  F: file;
begin
  if OpenDialog1.Execute then
begin
    AssignFile(F, OpenDialog1.FileName);
    Label1.Caption:=IntToStr(FileSize(F);
end;
Миша вне форума Ответить с цитированием
Старый 27.12.2009, 00:26   #3
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

Одна из самых быстрых и простых (размер будет в байтах) :
Код:
function GetFileSize(FileName: String): Integer;
var
  FS:TFileStream;
begin
  try
    FS := TFileStream.Create(Filename, fmOpenRead);
  except
    Result := -1;
  end;
  if Result <> -1 then Result := FS.Size;
  FS.Free;
end;
Вложения
Тип файла: rar 001.rar (167.8 Кб, 28 просмотров)
"Заряженному танку в дуло не смотрят" @Dekmer in WoT

Последний раз редактировалось Kotofff; 27.12.2009 в 00:32. Причина: добавил пример ...
Kotofff вне форума Ответить с цитированием
Старый 27.12.2009, 00:33   #4
VIR1435
Пользователь
 
Регистрация: 28.09.2009
Сообщений: 19
По умолчанию

Kotofff этот метод я занаю но у меня он неправильно определяет размер файла

Вот этим методом у меня фаил размером 10 гб получается 1189 мб

Последний раз редактировалось VIR1435; 27.12.2009 в 01:02.
VIR1435 вне форума Ответить с цитированием
Старый 27.12.2009, 00:35   #5
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

ммм ... не забываем за 4 гига однако...
Код:
function GetFileSize2(namefile: string): Int64;
var InfoFile: TSearchRec;
    AttrFile: Integer;
    Error: Integer;
begin
 AttrFile := $0000003F; // Any file
 Error    := FindFirst(namefile, AttrFile, InfoFile);
 if Error <> 0 then result := -1
  else begin
   Result := InfoFile.FindData.nFileSizeHigh;
   Result := Result shl 32;
   Result := Result or InfoFile.FindData.nFileSizeLow
  end;
 FindClose(InfoFile)
end;
проверено неоднократно на iso образах


upd
-------

метод Kotofff-а тоже определяет, тип result поставьте int64, делов-то.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation

Последний раз редактировалось raxp; 27.12.2009 в 00:51.
raxp вне форума Ответить с цитированием
Старый 27.12.2009, 01:03   #6
VIR1435
Пользователь
 
Регистрация: 28.09.2009
Сообщений: 19
По умолчанию

raxp Спасибо что про int64 сказал
у меня оказалось что переменная в которую присваевается размер была не int64 а integer

ВСЕМ СПАСИБО
VIR1435 вне форума Ответить с цитированием
Старый 27.12.2009, 10:55   #7
postal2
Форумчанин
 
Аватар для postal2
 
Регистрация: 31.10.2008
Сообщений: 215
По умолчанию

Так и в коде, который предложил Kotofff можно на выход поставить не integer, а int64 и будет всё ok
[Ferox]
postal2 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определить размер файла перед скачиванием. kalexi Работа с сетью в Delphi 12 17.02.2012 18:17
Узнать размер файла более 4 гб Asteroid Работа с сетью в Delphi 6 30.11.2009 15:22
Как программно определить зависшее приложение? Air Win Api 5 26.11.2007 00:30
Как определить размер кадра в AVI sun Общие вопросы C/C++ 1 18.11.2007 06:00