Процедура FormatStr Drivers
================================================================= Объявление procedure FormatStr(var Result: String; Format: String; var Params);
Функция Процедура форматирования строки, которая работает подобно функции языка Си vsprintf. Format включает спецификаторы формата, а Params содержит список параметров. FormatStr выполняет форматированный вывод строки в Result. Параметр Format может содержать любое число спецификаторов формата, для отображения параметров в Params. Формат спецификаторов - %[-][nnn]X, где - % указывает начало спецификатора формата; - [-] необязательный знак минуса, указывающий, что параметр будет выровнен влево (по умолчанию параметры при отображении выравниваются вправо); - [nnn] - необязательный десятичный спецификатор длины в диапазоне 0-255 (0 указывает на отсутствие длины, а не нуль означает, что выводится поле в nnn символов); - Х - символ формата: - 's' означает, что параметр указывает на строку; - 'd' означает десятичное представление LongInt параметра; - 'c' означает, что младший байт параметра - символ; - 'x' означает шестнадцатиричное представление параметра LongInt. - '#'устанавливает индекс параметра в nnn.
Например, если параметр указывает на строку, содержащую 'spiny', следующая таблица показывает спецификаторы и их результаты при печати:
Таблица 14.11. Спецификаторы формата и их результаты.
----------------------------------------- Спецификатор Результат ----------------------------------------- %6s ' spiny' %-6s 'spiny' %3s 'iny' %-3s 'spi' %06s '0spiny' %-06s 'spiny0' ----------------------------------------
Params - это нетипированный var параметр, содержащий параметры с соответствующимим спецификаторами формата в Format. Params должен быть массивом из LongInt или указателей или записью, содержащей LongInt или указатели. Например, для вывода строки сообщения об ошибке
Error in file [file name] at line [line number]
Вы должны послать следующую строку в Format:
'Error in file %s at line %d'.
Params должен содержать указатель на строку имени файла и Longint, представляющая число строк в файле. Это может быть сделано двумя способами: в массиве или в записи. Следующий пример показывает два типа объявлений и присвоений переменных, оба создают допустимые значения, передаваемые как Params в FormatStr.
type ErrMsgRec = record FileName: PString; LineNo: Longint; end;
ErrMsgArray = array[01] of Longint;
const TemplateMsg = 'Error in file %s at line %d';
var MyFileName: FNameStr; OopsRec: ErrMsgRec; DarnArray: ErrMsgArray; TestStr: String;
begin MyFileName := 'WARTHOG.ASM';
with OopsRec do begin FileName := @MyFileName; LineTo := 42; end; FormatStr(TestStr, TemplateMsg, OopsRec); Writeln(TestStr);
DarnArray[0] := Longint(@MyFileName); DarnArray[1] := 24; FormatStr(TestStr, TemplateMsg, DarnArray); Writeln(TestStr); end;
См. также Функцию SystemError, объект TParamText.