Описание функции


Format

Возвращает форматированную строку.

Format ( text.s, *value1 = 0[, *value2 = 0[, *value3 = 0[, *value4 = 0[, *value5 = 0[, *value6 = 0[, *value7 = 0[, *value8 = 0[, *value9 = 0[, *value10 = 0[, *value11 = 0]]]]]]]]]] )

Параметры

text Строка-шаблон, содержащая управляющие последовательности.
value1-value11 Передаваемые параметры в виде указателей на данные. Их количество задаётся и в объявлении функции, в зависимости сколько параметров вам нужно передать.

Примечания

Каждая "переменная" (*value1...*value11) является указателем на данные.
Шаблон (text) распознаёт специальные символы: \n, \r, \t, \v, \f. Литеральный "%" записывается как %%.

Формат управляющей последовательности:
%[флаги] [ширина] [.точность] тип
Обязательными составными частями являются символ начала управляющей последовательности (%) и тип.
Несоответствие количества управляющих последовательностей и количества переменных не приводит к ошибке.

Примеры управляющей последовательности:

%'010.2f
%'08.12s
%10s
%.2f
%'02i
%X


        Спецификатор типа

Спецификаторы типа определяются типами поддержанными в PureBasic
ТипТип переменнойВыходной формат
bЦелоецелое число размером байт, от -127 до 127.
aБеззнаковое целоеБеззнаковый байт 0-255.
wЦелоеСлово, 2 байта, от - 32768 до +32767.
uБеззнаковое целоеБеззнаковое слово, 2 байта, от 0 до +65535.
lLong, 4 байтаLong, 4 байта от -2147483648 до +2147483647.
iЦелоеInteger, целое число, взависимости от x32 и x64 соотвественно как Long и Quad.
fС плавающей точкой4 байта. Выходная запись имеет вид [ - ]dddd.dddd, где dddd одна и более десятичных цифр. Количество цифр перед десятичной точкой зависит от величины числа, и количество цифр после десятичной точки зависит от спецификатора точности.
qQuad, 8 байтQuat, 8 байт от - 9223372036854775808 до +9223372036854775807.
dDouble двойноеДвойное число, высокая точность. Для отрицательной экспоненты 123.5e-20 возвращает 0, поэтому указать точность, число цифр после запятой.
xЦелоеШестнадцатеричное целое число без знака. Символы "abcdef" в нижнем регистре.
XЦелоеАналогично предыдущему x, но "ABCDEF" в верхнем регистре.
sСтрокаСтрока.
cСимволКод символа как Integer, 2 байта в юникодном компиляторе.




        Спецификатор флагов

ФлагЗначениеПо умолчанию
-Устанавливает левое выравнивание результата в пределах ширины области.Правое выравнивание.
+Устанавливает префикс выходного значения, знак "+" или "-"Знак появляется только для отрицательных величин (-).
'0
'[символ]
Если спецификатор ширины с префиксом '0, то нули добавляются до заполнения минимальной ширины. Вместо 0 может быть любой символ. Если нет символа, то заполняется пробелами.Пробел.

        Спецификатор ширины

Вторым необязательным элементом управляющей последовательности является спецификатор ширины. Ширина - неотрицательное десятичное целое число, указывает минимальную ширину поля (число выводимых символов), включая знак для чисел. Если количество символов меньше указанной, то добавляются пробелы слева или справа, в зависимости от указанного флага выравнивания. Если указанный параметр ширины начинается с '0, то нули добавляются до указанной ширины (вместо нуля можно использовать любой символ). Такое поведение не рекомендуется для левого выравнивания в числах.

Спецификатор ширины не обрезает выводимое значение. Если количество выводимых символов больше указанной ширины или ширина не задана, то выводятся все символы.

        Спецификатор точности

Третьим необязательным элементом управляющей последовательности является спецификатор точности. Это целое число, с предшествующей точкой (.), которое определяет количество символов вывода или количество цифр дробной части числа. В отличие от спецификатора ширины, спецификатор точности может привести либо к усечению строки, либо к округлению числа с плавающей запятой.

    Как на точность влияет тип

Для спецификаторов float и Double: это количество цифр, которое должно быть напечатано после десятичной точки.
Для спецификаторов строк: обрезать строку
Для шестнадцатеричного числа: определяет входное значение; 2 = байт (byte), 4 = слово (word); 8 = двойное слово (dword); 16 = квадрослово (qword)

См. также

sprintf

Пример

; mk-soft
; https://www.purebasic.fr/english/viewtopic.php?t=32026
EnableExplicit

XIncludeFile "Format.pbi"

Define Time$, n, u, f.f

; Пример 1
n = 43951789
f = -1234.1234
u = -43951789
; q = 43951789


; учтите, что двойное %%, выводит символ как есть, буквально "%"; здесь \n - перенос строки, \t - табуляция
Debug Format("%%i = %i", @n) ; "43951789" стандартное целое Integer
Debug Format("%%f = %10.4f", @f) ; "-4395.1789" дробное число с плавающей точкой
Debug Format("%%x = %06x", @n) ; "29ea6ad" шестнадцатеричный вид (в нижнем регистре)
Debug Format("%%X = %06X", @n) ; "29EA6AD" шестнадцатеричный вид (в верхнем регистре)

Debug Format("%%+i = %+i", @n) ; "+43951789" добавляет знак указывающий положительное или отрицательное число
Debug Format("%%+i = %+i", @u) ; "-43951789" -//-
Debug Format("%%+i <0= %+i", @u) ; "-43951789" знак указывающий отрицательное число


Debug "—————————"
Define y = 2008, m = 4, d = 1, h = 8, i = 45, s = 9
Debug Format("%04i-%'02i-%'02i", @y, @m, @d) ; дата
Debug Format("%'02i:%'02i:%'02i", @h, @i, @s) ; время
Debug Format("%'04i-%'02i-%'02i %'02i:%'02i:%'02i", @y, @m, @d, @h, @i, @s) ; дата и время

Debug "—————————"

; Пример 2
Time$ = "5" ; только цифра от 0 до 9, проще использовать %d

; В многоязычном интерфейсе позволяет вставить переменную в любую позицию.
Debug Format("%s minutes passed", @Time$)
Debug Format("прошло %s минут", @Time$)


Debug "—————————"

n = $F4E6DC
Debug Format("%06X", @n)
Debug "Число цвет в шестнадцатеричном виде"

Debug Hex(n, #PB_Quad)