{************************************************
Formats a partition-/file size
Gibt eine Partitions-/Dateigro?e im Klartext aus
*************************************************}uses
SysUtils,...;
function BytesToStr(const i64Size: Int64): string;
const
i64GB = 1024 * 1024 * 1024;
i64MB = 1024 * 1024;
i64KB = 1024;
beginif i64Size div i64GB > 0 then
Result := Format('%.2f GB', [i64Size / i64GB])
elseif i64Size div i64MB > 0 then
Result := Format('%.2f MB', [i64Size / i64MB])
elseif i64Size div i64KB > 0 then
Result := Format('%.2f KB', [i64Size / i64KB])
else
Result := IntToStr(i64Size) + ' Byte(s)';
end;
Привет! Я переведу контент на русский язык.
Функция BytesToStr, определенная в коде Delphi, принимает целочисленное значение Int64, представляющее размер файла или раздела в байтах, и возвращает строковое представление этого размера в формате, понятном человеку.
Вот шаг за шагом, как функция работает:
Функция использует три константные переменные: i64GB, i64MB и i64KB, которые представляют гигабайты, мегабайты и килобайты соответственно, каждое из которых преобразовано в байты (1024^3, 1024^2 и 1024).
Функция принимает параметр Int64i64Size, представляющий размер файла или раздела.
Она проверяет, является ли размер файла больше нуля, если его делить на i64GB. Если это так, функция форматирует строку с результатом, округленным до двух десятичных знаков с помощью функции Format, и устанавливает возвращаемое значение в эту строку, префиксированную символами 'GB'.
Если размер файла не больше или равен i64GB, но больше нуля, если его делить на i64MB, функция форматирует строку с результатом, округленным до двух десятичных знаков, префиксирует ее символами 'MB' и возвращает.
Если размер файла не больше или равен i64MB но больше нуля, если его делить на i64KB, функция форматирует строку с результатом, округленным до двух десятичных знаков, префиксирует ее символами 'KB' и возвращает.
Если размер файла меньше i64KB, функция просто конвертирует значение в строку с помощью функции IntToStr и добавляет к ней ' Byte(s)'.
Функцию можно использовать следующим образом:
varfileSize:Int64;beginfileSize:=123456789;// Замените на свой размер файла в байтахwriteln(BytesToStr(fileSize));
Это выведет что-то вроде '117.4 MB'. Если вам нужно отображать результат в другой формате или с иной точностью, вы можете изменить функцию соответствующим образом.
Вот альтернативное решение с использованием более современного и компактного способа форматирования строк:
В этом варианте функция Format используется с глобальным форматным указателем (%g) для автоматического управления десятичными знаками и округлением. Это делает код более компактным и легким в обслуживании.
Программный код на Delphi предназначен для форматирования размера файла в строку, отображая информацию о мегабайтах, гигабайтах или байтах в зависимости от величины указанного размера.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.