Подобные проблемы переменных форматов, вообще говоря, решаются легко. В Турбо Паскале разрешено задавать форматы целочисленными переменными или константами:
- 245 -
VAR
F, n : ShortInt;
BEGIN
F:=8; n:=3;
WriteLn( 123.456 : F : n );
END.
До сих пор мы рассматриваем форматы, размещающие и форматирующие одновременно. Но когда длина значения заранее неизвестна, размещение-выравнивание по правому краю может дать некрасивые форматы:
Короткое число в формате 10 = 12
Длинное число в формате 10 = 12345678
Можно задать выравнивание по левому краю. В этом случае значение форматируется (если оно числовое) и пишется без предшествующих пробелов: сразу с текущей позиции. При этом занимается поле, равное длине значения. Никаких пробелов справа уже не дописывается:
Короткое число в формате -10 = 12
Длинное число в формате -10 = 12345678
Для задания такого режима надо ближнюю к значению спецификацию формата задавать отрицательной:
Write( 123.456 : 6 : 1, 22 : 4 ); { ' 123.5' и ' 22' }
Write( 123.456 :-6 : 1, 22 :-4 ); { '123.5' и '22' }
Несмотря на некоторое отсутствие гибкости в способе задания формата (нельзя задавать форматы-шаблоны — как в Фортране, Бейсике, а надо описывать каждое значение), механизм форматированного вывода текстовой информации Турбо Паскаля достаточно мощный. Помните только, что форматы имеют смысл лишь при работе с текстовыми файлами. Во всех остальных случаях они неприменимы.