Описание функции | |
StringFormat |
Возвращает форматированную строку (имитация функции sprintf() из языка C).
StringFormat('template',$var_s1[, ...$var_s32])
Параметры
template | Шаблон, содержащий управляющие последовательности (смотрите Примечания). |
var1...var32 |
До 32 переменных, которые будут выводиться в форматированной строке - 'template'. |
Возвращаемое значение
Возвращает форматированную строку, заданную шаблоном 'template'.Примечания
Для предотвращения переполнения буфера, каждая "переменная" ($var_s1...$var_s32) ограничена 65535 символами.Тип | Тип переменной | Выходной формат |
---|---|---|
d, i | Целое | Десятичное целое число. |
o | Целое | Восьмеричное целое число без знака. |
u | Целое | Десятичное целое число без знака. |
x | Целое | Шестнадцатеричное целое число без знака. Символы 'abcdef' в нижнем регистре. |
X | Целое | Аналогично предыдущему x, но 'ABCDEF' в верхнем регистре. |
e | С плавающей точкой | Экспоненциальный вид [ - ]d.dddd e [знак]ddd, где d единственная десятичная цифра, dddd одна и более десятичных цифр, ddd точно три десятичных цифры и знак + или -. |
E | С плавающей точкой | Аналогично e, отличие лишь в регистре показателя (E вместо e). |
f | С плавающей точкой | Выходная запись имеет вид [ - ]dddd.dddd, где dddd одна и более десятичных цифр. Количество цифр перед десятичной точкой зависит от величины числа, и количество цифр после десятичной точки зависит от спецификатора точности. |
g | С плавающей точкой | Выходная запись в формате f или e, в зависимости от того, в каком виде запись является более компактной для заданного значения и точности. Формат e задействуется только когда экспонента меньше -004 или при положительной экспоненте, если экспонента равна спецификатору точности или более. Завершающие нули отбрасываются, а точка появляется, если за ней будут следовать цифры. |
G | С плавающей точкой | Аналогично g, отличие лишь в регистре показателя (E вместо e, если он выводится). |
s | Строка | Строка. |
Флаг | Значение | По умолчанию |
---|---|---|
- | Устанавливает левое выравнивание результата в пределах ширины области. | Правое выравнивание. |
+ | Устанавливает префикс выходного значения, знак "+" или "-", если используется знаковый тип. | Знак появляется только для отрицательных величин (-). |
0 | Если спецификатор ширины с префиксом 0, то нули добавляются до заполнения минимальной ширины. Если появляются 0 и "-", то 0 игнорируется. Если 0 используется с типом целого числа (i, u, x, X, o, d) то 0 игнорируется. | Отсутствует заполнение. |
Пробел | Префикс выходного значения с пробелом, если выходное значение знаковое и положительно; Пробел игнорируется если используются оба флага "Пробел" и "+". | Отсутствует. |
# | При использовании типов o, x, X приписывает префикс любому ненулевому выходному значению соответственно 0, 0x, 0X. | Отсутствует. |
# | При использовании типов e, E, f принуждает выходное значение содержать десятичную точку во всех случаях. | Десятичная точка появляется, только если цифры следуют за ней. |
# | При использовании типов g, G, принуждает выходное значение содержать десятичную точку во всех случаях и предотвращает усечение конечных нулей. Игнорируется при использовании с типами d, i, u, или s. | Десятичная точка появляется, только если цифры следуют за ней. Конечные нули исключены. |
Тип | Значение | По умолчанию |
---|---|---|
d, i, u, o, x, X | Точность задает минимальное количество цифр для вывода. Если количество цифр в аргументе меньше, чем точность, выходное значение дополняется нулями слева. Значение не сокращается, когда количество цифр превышает точность. | По умолчанию точность - 1. |
e, E | Точность определяет количество цифр для вывода после десятичной точки. Последняя цифра вывода округляется. | По умолчанию точность - 6; если точность 0 или точка (.) появляется без числа, следующего за ним, десятичная точка не выводится. |
f | Точность величины определяет количество цифр после запятой. Десятичная точка появляется, только если цифры следуют за ней. Значение округляется до соответствующего количества цифр | По умолчанию точность - 6; если точность 0 или точка (.) появляется без числа, следующего за ним, десятичная точка не выводится. |
g, G | Точность определяется максимальным количеством значащих цифр вывода. | Шесть значащих цифр выводятся, любые конечные нули усечены. |
s | Точность определяется максимальным количеством символов для вывода. Символы сверх точности не выводятся. | Символы выводятся до первого нулевого символа. |
Примеры: | Как создать кнопку? |
exect=$var_i=5||$var_s=StringFormat('%%08s',$var_i)||_ViewValues('$var_s') ;; пример добавление ведущих нулей к цифре 5
exect=$var_i=5||$var_s=StringFormat('%%.3f',$var_i)||_ViewValues($var_s) ;; пример добавление конечных нулей к цифре 5
exect=StringFormat('%%x<===>%%X',1233567,1233567) GLOBALEXECT<a> ;; возвращает шестнадцатеричное значение числа %x-нижний %X-верхний регистр
exect=StringFormat('{%%16.5f}',10.00) GLOBALEXECT<a> ;; преобразование числа с добавлением в начало пробелов
exect=StringFormat('%%04d.%%02d.%%02d~~%%02d:%%02d:%%02d',@YEAR,@MON,@MDAY,@HOUR,@MIN,@SEC) GLOBALEXECT<a> ;; получение преобразованной даты
exect=StringFormat('[%%s]~~{%%s}','line1','line2') GLOBALEXECT<a> ;; обрамляет строку скобками
exect=StringFormat('%%d',0xFF00FF) GLOBALEXECT<a> ;; возвращает десятичное число
exect=StringFormat('%%o',64) GLOBALEXECT<a> ;; возвращает восьмеричное число
exect=StringFormat('%%o~~%%09d~~%%d',64,Null,0x100) GLOBALEXECT<a> ;; возвращает строку заданную форматированием
exect=SplashTextOn('Заголовок','Дата:~~'&StringFormat('%%04d.%%02d.%%02d~~%%02d:%%02d:%%02d',@YEAR,@MON,@MDAY,@HOUR,@MIN,@SEC),300,200,-1,5,0,Null,38,700)+Sleep(3000)+SplashOff() ;; пример окна с датой
sends=§ slist=$GLOBALSENDS[1]&20||?V|>>|Assign('var_n',StringFormat('%.1f',:NUMBER:/10),2)||§!!$var_n GLOBALSLIST<a> ;; получить счётчик вида 0.1, 0.2, ..., 1.0, 1.1
sends=§ slist=$GLOBALSENDS[1]&20||?V|==|'§!!'&StringFormat('%.1f',:NUMBER:/10) GLOBALSLIST<a> ;; получить счётчик вида 0.1, 0.2, ..., 1.0, 1.1
sends=§ slist=$GLOBALSENDS[1]&20||?V|==|'§!!'&StringFormat('%.3f',:NUMBER:/10) GLOBALSLIST<a> ;; получить счётчик вида 0.100, 0.200, ..., 1.000, 1.100
exect=$var_s=StringFormat('%%02X%%02X%%02X',23,14,10)||_ViewValues('$var_s') ;; конвертировать числа в Hex
exect=$var_s=StringReplace(StringFormat('%%100s',''''),'~~','abcde')||_ViewValues('$var_s') ;; размножить строку 100 раз