Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > printf("%03d", 25) в Delphi?


Автор: Saygak 17.7.2008, 14:18
Здравствуйте уважаемые программисты. Я частенько перевожу номер дня в строку (имена файлов у меня f:\PATH\K05\D025\st05025.dat и т.д). В с++ я просто делал нечто похожее
Код

sprintf(FileName, "f:\\PATH\\K%02d\\D%03d\\st%02d%03d.dat", year, day, year, day);

а Format так делать не хочет (%03d - значит что целое число нужно выровнять на три позиции если слева есть пробелы заменить их нулём, т.е. " 25" -> "025"). Так вот собственно вопрос вот в чем: есть ли стандартные способы замены выравнивающих символов " " на "0" в Delphi (ну аналог TFormatSettigs или DecimalSeparator для DateTime???)
Свои реализации типа:
Код

function DayToStr(const Value: Integer): String;
begin
  Result := Format('%3d", [Value]);
  if Result[1] = ' ' then Result[1]:='0';
  if Result[2] = ' ' then Result[2]:='0';
end;

просьба не предлагать.
Заранее спасибо.

Автор: kemiisto 17.7.2008, 17:27
 smile 

Цитата

Format specifiers have the following form:
 
"%" [index ":"] ["-"] [width] ["." prec] type
... 
An optional precision specifier, ["." prec]
...
The following table summarizes the possible values for type:     
d Decimal. The argument must be an integer value. The value is converted to a string of decimal digits. If the format string contains a precision specifier, it indicates that the resulting string must contain at least the specified number of digits; if the value has less digits, the resulting string is left-padded with zeros.


Код

Writeln(Format('f:\PATH\K%2.2d\D%3.3d\st%2.2d%3.3d.dat', [8, 17, 8, 17]));


Автор: Saygak 18.7.2008, 13:59
Спасибо большое kemiisto, а то так дураком бы и помер (Выразил бы респект, да не могу - мало постов)

Автор: kemiisto 20.7.2008, 20:54
Saygak, рад стараться!  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)