Неправильно работает Format

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
А.Н.
постоялец
Сообщения: 230
Зарегистрирован: 13.03.2010 11:23:58

Неправильно работает Format

Сообщение А.Н. »

Мне нужно выводить номера с заполнением нулями слева.
Примерно так:
00001
00023
00210

Как понимаю, Format должен поддерживать все спецификаторы printf?

Код: Выделить всё

strgridPolises.Cells[1, i] := Format('%0*d', [digits_count, j]);

Вот на такое оно выдаёт диалог с ошибкой, типа "Неверный спецификатор формата " '. :(

А, когда делаю так:

Код: Выделить всё

strgridPolises.Cells[1, i] := Format('%0' + digits_count + 'd', [j]);

Тоже не работает.

Где же я, в этот раз, накосячил?
скалогрыз
долгожитель
Сообщения: 1804
Зарегистрирован: 03.09.2008 02:36:48

Сообщение скалогрыз »

А.Н. писал(а):Как понимаю, Format должен поддерживать все спецификаторы printf?
Где же я, в этот раз, накосячил?


Format должен поддерживать все специфакторы Delphийского Format() ;)

вот что тебе нужно:

Код: Выделить всё

  Format('%.' + digits_count + 'd', [j])



описание здесь: http://www.freepascal.org/docs-html/rtl ... ormat.html

Код: Выделить всё

'%' [[Index]':'] ['-'] [Width] ['.' Precision] ArgType


D
Decimal format. The next argument in the Args array should be an integer. The argument is converted to a decimal string. If precision is specified, then the string will have at least Precision digits in it. If needed, the string is (left) padded with zeroes.
А.Н.
постоялец
Сообщения: 230
Зарегистрирован: 13.03.2010 11:23:58

Сообщение А.Н. »

Спасибо. :)
Сделал так:

Код: Выделить всё

strgridPolises.Cells[1, i] := Format('%.*d', [digits_count, j]);
скалогрыз
долгожитель
Сообщения: 1804
Зарегистрирован: 03.09.2008 02:36:48

Сообщение скалогрыз »

А.Н. писал(а):

Код: Выделить всё

strgridPolises.Cells[1, i] := Format('%.*d', [digits_count, j]);

лишь бы работало... :) а то рекурсия в таких местах (парсинг и автоподстановка) меня настораживает...
Ответить