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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.08.2015, 16:33   #1
ridek
Пользователь
 
Регистрация: 30.07.2015
Сообщений: 16
Восклицание Delphi - размер файла

Всем привет.
Возник вопрос, как мне перевести размер файла с байтов в мегабайт или в гигабайт.
Ищу размер так:
Код:
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;

Последний раз редактировалось Stilet; 01.08.2015 в 20:41.
ridek вне форума Ответить с цитированием
Старый 01.08.2015, 16:46   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,299
По умолчанию

FS.Size div 1000000 - мегабайты
FS.Size div 1000000000 - гигабайты
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 01.08.2015, 16:49   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
div 1000000
C каких пор?

FS.Size div 1024 - килобайты
FS.Size div (1024^2) - мегабайты
FS.Size div (1024^3) - гигабайты
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 01.08.2015, 17:07   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,299
По умолчанию

Аватар, ой, действительно ошибся (задумался и стал вести подсчет, как производители накопителей http://old.computerra.ru/storage/343592/).
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 01.08.2015, 17:08   #5
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

Код:
function GetFileSize(FileName: String): Integer;
High(Integer) = как раз 1024^3 - 1
Для файлов от 2 Гб будет выводить всякую фигню.
type_Oleg вне форума Ответить с цитированием
Старый 01.08.2015, 20:20   #6
ridek
Пользователь
 
Регистрация: 30.07.2015
Сообщений: 16
По умолчанию

Спасибо, работает.
А как мне теперь вывести до десятых?
Чтобы было так 11,2.
ridek вне форума Ответить с цитированием
Старый 01.08.2015, 20:42   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
format('%10.2f',[FS.Size/1024/1024]);
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.08.2015, 22:23   #8
ridek
Пользователь
 
Регистрация: 30.07.2015
Сообщений: 16
По умолчанию

Спасибо, получилось.
ridek вне форума Ответить с цитированием
Старый 02.08.2015, 02:38   #9
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Когда-то в прошлой жизни я что-то такое говнокодил...
Код:
function FileSize2Str(const ASize: Int64): string;
begin
  if ASize < 1024
    then Result:= IntToStr(ASize) + ' байт'
    else if ASize < 1048576
           then Result:= FloatToStrF(ASize / 1024, ffFixed, 15, 2) + ' Кб'
           else Result:= FloatToStrF(ASize / 1048576, ffFixed, 15, 2) + ' Мб';
end;
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 02.08.2015, 03:10   #10
Vapaamies
Ваш К. О.
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,782
По умолчанию

"Б" большое должно быть, иначе это биты.
Vapaamies вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Размер выходного exe-файла Delphi XE min@y™ Общие вопросы Delphi 21 01.05.2015 10:37
Размер файла paravoz1k Общие вопросы Delphi 2 13.02.2011 21:52
Как в Delphi определить размер файла? Nomad Помощь студентам 7 10.08.2010 08:33
Размер файла flug Общие вопросы Delphi 2 29.10.2009 13:43
Размер файла NetSpace Свободное общение 2 15.06.2009 13:36