- •Модуль и его структура
- •Структура модуля
- •Список uses
- •Интерфейс
- •Реализациия
- •Инициализация и завершение
- •Ключевые слова
- •Слово const
- •Слово type
- •Слово var
- •Комментарии
- •Переменные
- •Типы данных и переменные
- •Преобразование типов
- •Знаки операций
- •Массивы
- •Одномерные массивы
- •Многомерные массивы
- •Функции Low и High
- •Динамические массивы
- •Короткая строка
- •Длинная строка
- •Расширенная строка
- •Строка с терминальным нулем
- •Операции со строками Слияние
- •Извлечение символа
- •Управляющие символы в строках
- •Разбиение литерала по строкам программы
- •Сравнение строк
- •Строковые функции
- •Форматирование строк
- •Множества
- •Объявление записи
- •Оператор with
- •Массивы записей
- •Совместимость типов данных
- •Указатели
- •Статические и динамические переменные
- •Размещение динамических переменных
- •Разыменование указателя
- •Управление вычислениями Операторы if, then, else
- •Выполнение нескольких инструкций.
- •Вложенные условия.
- •Циклы Элементы структуры цикла
- •Цикл for…
- •Функции Pred и Succ
- •Цикл while
- •Цикл repeat
- •Управление циклами
- •Оператор goto
- •Оператор case
- •Область видимости идентификаторов
- •Подпрограммы
- •Процедуры и функции
- •Объявление и определение подпрограммы
- •Параметры подпрограмм
- •Локальные процедуры и функции
- •Перегрузка подпрограмм
- •Параметры по умолчанию
- •Включение внешнего файла в модуль
Форматирование строк
Форматируемая строка, передаваемая в функцию Format может содержать обычный текст и спецификации формата. Текст копируется в результирующую строку без изменения. Спецификация формата извлекает из списка аргументов очередной параметр и преобразует его в строку т.е. форматирует в соответствии с информацией, закодированной в спецификаторе.
Спецификатор формата имеет вид:
% [index :] [-] [width] [. prec] type
Здесь квадратные скобки охватывают необязательные элементы конструкции.
Любая спецификация формата начинается с символа %. После % следуют параметры спецификации в следующем порядке:
индекс аргумента [index:]
признак выравнивания влево, [-]
спецификация ширины, [width]
спецификация точности, [. prec]
код формата, type
Допустимые коды перечислены в следующей таблице:
Код |
Описание |
d |
Десятичный. Соответствующий аргумент должен быть целым числом. Значение аргумента преобразуется в строку десятичных цифр. Если указан спецификатор точности, то отформатированное значение будет содержать это количество символов. Если аргумент содержит меньше цифр, то слева добавляется недостающее число нулей. |
e |
Научный. Аргумент должен быть вещественным числом. Его значение преобразуется в строку вида "-d.ddd...E+ddd". Знак ставится если число отрицательное. Десятичной точке предшествует всегда одна цифра. Общее число цифр (включая одну перед точкой) определяется спецификатором точности. По умолчанию число цифр равно 15. За символом экспоненты "E" всегда следует знак плюс или минус и, по-крайней мере, 3 цифры. |
f |
Фиксированный. Аргумент должен быть вещественным числом. Его значение преобразуется в строку вида "-ddd.ddd...". Знак ставится если число отрицательное. Число цифр после точки определяется спецификатором точности. Если спецификатор точности отсутствует после точки по умолчанию будет две цифры.
|
g |
Универсальный. Аргумент должен быть вещественным. Его значение преобразуется в строку минимально возможной длины либо фиксированного, либо научного формата. Количество значащих цифр результата зависит от значения, заданного спецификатором точности. По умолчанию это 15 цифр. Незначащие нули удаляются из результата, а десятичная точка присутствует только когда она необходима. При преобразовании применяется фиксированный формат если число цифр слева от десятичной точки меньше или равно значению спецификатора точности и форматируемое значение не меньше 0.00001. В противном случае применяется научный формат.
|
n |
Числовой. Аргумент должен быть вещественным числом. Его значение преобразуется в строку вида "-d,ddd,ddd.ddd...". Этот формат аналогичен формату "f" с той разницей, что добавляются разделители тысяч.
|
m |
Денежный. Аргумент должен быть вещественным числом. Его значение преобразуется в строку с учетом текущих значений глобальных переменных CurrencyString, CurrencyFormat, NegCurrFormat, ThousandSeparator, DecimalSeparator, CurrencyDecimals, взятых из раздела «Язык и стандарты» панели управления Windows. Если задан спецификатор точности, его значение используется вместо CurrencyDecimals. |
p |
Адрес. Аргумент должен быть указателем Его значение преобразуется в строку вида "XXXX:YYYY" где XXXX и YYYY сегмент и смещение, выраженные в 16-ричной системе счисления.
|
s |
Строка. Аргумент должен быть символом, строкой типа string или строкой PChar. Строковый аргумент вставляется в результирующую строку вместо спецификатора формата. Спецификатор точности устанавливает максимальную длину результата (количество символов). Если аргумент–строка имеет большую длину, «лишние» символы отбрасываются.
|
x |
Шестнадцатеричный. Аргумент должен быть целым числом. Его значение преобразуется в строку 16-ричных цифр.
|
Спецификаторы формата можно записывать как строчными, так и заглавными буквами.
При форматировании вещественных значений используются разделители дробной части и тысяч, определенные в секции «Язык и стандарты» панели управления Windows. Во время выполнения программы они записаны в глобальных переменных DecimalSeparator и ThousandSeparator.
Значения спецификаторов index, width, и precision могут быть указаны явно (например "%10d"), либо неявно с помощью символа * (например "%*.*f"). В последнем случае следующий по порядку аргумент из списка (он должен быть целым числом) используется как соответствующий спецификатор. Например,
Format('%*.*f', [8, 2, 123.456])
то же самое что и
Format('%8.2f', [123.456]).
Спецификация width задает минимально допустимую ширину поля. Если результирующая строка короче ширины поля, в нее добавляется соответствующее число пробелов. По умолчанию результат выравнивается вправо, но если спецификация формата содержит знак (-), то результат выравнивается влево.
Спецификатор индекса (index) явно указывает на аргумент в списке. Индекс первого аргумента в списке равен 0. Используя спецификацию индекса можно форматировать одни и те же аргументы несколько раз. Например, результатом Format('%d %d %0:d %d', [10, 20]) будет строка вида '10 20 10 20'.