Главная » Free Pascal » Format — универсальная функция преобразования данных Free Pascal

0

Наиболее широкими возможностями по преобразованию данных разного типа в их символьное представление обладает функция Format. Ее идеология заимствова- на из языков C, C++. В упрощенном варианте обращение к функции Format выгля- дит следующим образом:

s:=Format(‘форматные указатели’, [список значений]);

Квадратные скобки, выделяющие второй аргумент, здесь являются обязатель- ным элементом синтаксической конструкции. Функция Format возвращает резуль- тат преобразования в виде значения типа String. Чтобы не запутаться во всех воз- можностях этой универсальной функции, продемонстрируем некоторые из них на следующем примере (листинг 5.10).

   Листинг 5.10. Программа  format1                                             

program format1; uses SysUtils; var

i:integer=123;

f:single=pi;  ch:char=’A'; s:string=’Hello, world!';

begin

writeln(Format(‘i=%5d f=%8.2f ch=%s s=%s’,[i,f,ch,s])); readln;

end.

Результат преобразования представлен на рис. 5.9.

Рис. 5.9. Форматный вывод

В строке форматных указателей нашего примера находятся четыре указателя, каждый из которых начинается с символа %. Указатель ‘%5d’ предписывает преоб- разовать целочисленное машинное значение (символ d — от англ. decimal) в строку из 5 позиций. То, что предшествует первому форматному указателю (i=), перено- сится в результат без каких-либо преобразований. Второй форматный указатель ‘%8.2f’ управляет преобразованием вещественного значения (символ f — от англ. float), для которого в результирующей строке отводится 8 позиций, в том числе 2 позиции под дробную часть. Указатель ‘%s’ говорит о том, что "преобразованию" подвергается строковое значение. Все остальные символы из форматной строки, не относящиеся к форматным указателям, переносятся в результирующую строку без изменений (‘f=’, ‘ch=’, ‘s=’). Количество преобразуемых значений в списке равно четырем, так что на каждое значение приходится свой форматный указатель. В об- щем случае количество форматных указателей и количество преобразуемых значе- ний могут отличаться.

Форматный указатель всегда начинается с символа %. В тех случаях, когда мы хотим поместить символ процента в результирующую строку, форматная строка должна содержать два таких символа подряд — %%. В самом общем виде формат- ный указатель может содержать следующие компоненты:

%[index:][-][w][.n]

Обязательными компонентами любого форматного указателя являются началь- ный символ % и последняя буква . Именно эта буква оказывает главное влияние на характер преобразования.

Целое число index определяет порядковый номер элемента из списка преобра- зуемых значений, к которому относится данный форматный указатель. Индексация данных позволят повторять некоторые элементы из списка значений в разных мес- тах результирующей  строки.  Отсчет  индексов  в  списке  значений  ведется  от  0. В табл. 5.4 приведены два примера использования индексов.

Таблица 5.4

Обращение

Результат

Format(‘%d %d %d %0:d %d’,[1,2,3,4])

1

2

3

1

2

Format(‘%d %d %d %0:d %3:d’,[1,2,3,4])

1

2

3

1

4

Символ "минус", предшествующий числовому значению ширины поля (w), означа- ет, что на отведенных w позициях преобразованное значение должно быть прижато к левой границе поля. По умолчанию действует прижим к правой границе поля.

Число n, которое в руководствах иногда называют "точностью", по-разному влияет на вывод числовых и строковых данных. Для вещественных чисел в форма- те с фиксированной точкой оно задает количество цифр в дробной части. Для це- лых чисел и строк значение n определяет количество обязательно отображаемых цифр или символов.

Последняя  буква  форматного  указателя,  определяющая  тип  преобразования, может быть как строчной, так и прописной. Список возможных значений символа  приведен в табл. 5.5.

Таблица 5.5

Буква

Характер преобразования

d

Целое десятичное число со знаком (decimal)

e

Вещественное число с плавающей запятой (по умолчанию 15 значащих цифр)

f

Вещественное число с фиксированной запятой (по умолчанию 2 цифры в дробной части)

g

Обобщенный формат вещественных данных (e или f)

m

Число в денежном формате

n

Вещественное число с фиксированной запятой и символом разделения "тысяч"

p

Значение указателя (до 8 шестнадцатеричных цифр)

s

Значение строки

u

Целое десятичное число без знака (unsigned)

x

Целое число в шестнадцатеричном формате

Для дополнительного управления форматом денежных единиц необходимо ис- пользовать системные переменные CurrencyString,  CurrencyFormat, NegCurFormat, ThousendSeparator, DecimalSeparator.

Источник: Кетков, Ю. Л., Свободное программное обеспечение. FREE PASCAL для студентов и школьников, Ю. Л. Кетков, А. Ю. Кетков. — СПб.: БХВ-Петербург, 2011. — 384 с.: ил. + CD-ROM — (ИиИКТ)

По теме:

  • Комментарии