1 function Format ( Const Formatting : string; Const Data : array of const ) : string; 2 function Format ( Const Formatting : string; Const Data : array of const; FormatSettings : TFormatSettings ) : string;
Функция Format обеспечивает 'C' подобное форматирование множества простых типов данных в строке. Она обеспечивает очень точное управление по этому форматированию. Параметр Formatting определяет, как массив Data Данных управляется в возвращенной строке. Форматируемая cтрока может включать соединение обычных символов (которые передаются неизменными в строку результата), и символам форматирования данных. Такое форматирование лучше всего объясняется кодом примера. В простых условиях каждые данные, форматирующие подстроку начинаются с % и заканчиваются индикатором типа данных: d = Десятичное (целое число) e = Научный f = Установленный g = Генерал m = Деньги n = Число (плавающее) p = Указатель s = Строка u = Десятичное число без знака x = Шестнадцатеричный Общий формат форматирования каждой подстроки следующий: %[Index:][-][Width][.Precision]Type где квадратные скобки относятся к дополнительным параметрам, и :. - символы - литералы, первые 2 из которых используются, чтобы идентифицировать два из дополнительных параметров. Версия 2 этой функции - для использования в пределах потоков. Вы должны заполнить запись FormatSettings перед вызовом запроса. Она берёт местную копию глобальной переменной, форматирующей переменные, которые делают подпрограмму потоко-безопасной.
|
Пример кода : Показ всех форматируемых типов данных
var text : string; begin // Только 1 элемент данных ShowMessage(Format('%s', ['Hello'])); // Соединение символьного текста и элемента данных ShowMessage(Format('String = %s', ['Hello'])); ShowMessage(''); // Примеры каждого из типов данных ShowMessage(Format('Decimal = %d', [-123])); ShowMessage(Format('Exponent = %e', [12345.678])); ShowMessage(Format('Fixed = %f', [12345.678])); ShowMessage(Format('General = %g', [12345.678])); ShowMessage(Format('Number = %n', [12345.678])); ShowMessage(Format('Money = %m', [12345.678])); ShowMessage(Format('Pointer = %p', [addr(text)])); ShowMessage(Format('String = %s', ['Hello'])); ShowMessage(Format('Unsigned decimal = %u', [123])); ShowMessage(Format('Hexadecimal = %x', [140])); end;
Hello String = Hello Decimal = -123 Exponent = 1.23456780000000E+004 Fixed = 12345.68 General = 12345.678 Number = 12,345,68 Money = ?12,345.68 Pointer = 0069FC90 String = Hello Unsigned decimal = 123 Hexadecimal = 8C
Пример кода : Используя индекс, ширину и значения точности
begin // Значение ширины диктует размер вывода // с пробелом, добавляющемся слева // Обратите внимание <>, символы добавляются, чтобы показать форматирование ShowMessage(Format('Padded decimal = <%7d>', [1234])); // С '-' оператором, данные выравниваются влево ShowMessage(Format('Justified decimal = <%-7d>', [1234])); // Значение точности вынуждает 0 дополнений к желательному размеру ShowMessage(Format('0 padded decimal = <%.6d>', [1234])); // Комбинация ширины и точности // Обратите внимание, что значение ширины предшествует значению точности ShowMessage(Format('Width + precision = <%8.6d>', [1234])); // Индексное значение позволяет следующему значению в массиве // данных быть измененным ShowMessage(Format('Reposition after 3 strings = %s %s %s %1:s %s', ['Zero', 'One', 'Two', 'Three'])); // Обратите внимание, испытание показало, что * для параметра ширины // может привести к ECONVERTERROR. ShowMessage(Format('In line = <%10.4d>', [1234])); ShowMessage(Format('Part data driven = <%*.4d>', [10, 1234])); ShowMessage(Format('Data driven = <%*.*d>', [10, 4, 1234])); end;
Padded decimal = < 1234> Justified decimal = <1234 > 0 padded decimal = <001234> Width + precision = < 001234> Reposition after 3 strings = Zero One Two One Two In line = < 1234> Part data driven = < 1234> Data driven = < 1234>
|