Message со встроенным форматом -
lost13 - 17.11.2014
Суть в том что если сделать вот так: Message(playerid, color, "Param1 = %d, Param2 = %d", param1, param2);
Форматируется только param1, а на месте param2 будет пусто.
Например: "Param1 = 1, Param2 = "
pawn Code:
stock Message(playerid, color, msg[], {Float,_}:...){
static const STATIC_ARGS = 3;
new n = (numargs() - STATIC_ARGS) * BYTES_PER_CELL;
if(n){
new message[256], arg_start, arg_end;
#emit CONST.alt msg
#emit LCTRL 5
#emit ADD
#emit STOR.S.pri arg_start
#emit LOAD.S.alt n
#emit ADD
#emit STOR.S.pri arg_end
do{
#emit LOAD.I
#emit PUSH.pri
arg_end -= BYTES_PER_CELL;
#emit LOAD.S.pri arg_end
}
while (arg_end > arg_start);
// Push the static format parameters.
#emit PUSH.S msg
#emit PUSH.C 128
#emit PUSH.ADR message
n += BYTES_PER_CELL * 3;
#emit PUSH.S n
#emit SYSREQ.C format
n += BYTES_PER_CELL;
#emit LCTRL 4
#emit LOAD.S.alt n
#emit ADD
#emit SCTRL 4
return SendClientMessage(playerid, color, message);
}else{
return SendClientMessage(playerid, color, msg);}}
Re: Message со встроенным форматом -
OKStyle - 18.11.2014
Зачем заниматься ерудной? Обычный формат используйте.
Re: Message со встроенным форматом -
lost13 - 18.11.2014
Quote:
Originally Posted by OKStyle
Зачем заниматься ерудной? Обычный формат используйте.
|
Обычный формат для слабаков ^^
Re: Message со встроенным форматом -
OKStyle - 18.11.2014
Данный код медленнее. Доказано нами при написании подобного для вывода форматированного диалога.
Re: Message со встроенным форматом -
Romz - 18.11.2014
Плохо что в pawn нельзя делать вот так:
PHP Code:
SendClientMessage(playerid, -1, "Деньги: " + money + ", Убийств: " + kills + ".");
Было бы круто)
Re: Message со встроенным форматом -
lost13 - 18.11.2014
Quote:
Originally Posted by OKStyle
Данный код медленнее. Доказано нами при написании подобного для вывода форматированного диалога.
|
Да как бы без разницы, я уже нашел другой вариант, рабочий в отличии от этого
Re: Message со встроенным форматом -
Stepashka - 19.11.2014
Quote:
Originally Posted by Kolstin
Плохо что в pawn нельзя делать вот так:
PHP Code:
SendClientMessage(playerid, -1, "Деньги: " + money + ", Убийств: " + kills + ".");
Было бы круто)
|
Так можно делать только в интерпретируемых языках. И нет, это не круто.
Re: Message со встроенным форматом -
Romz - 19.11.2014
Quote:
Originally Posted by Stepashka
Так можно делать только в интерпретируемых языках. И нет, это не круто.
|
Почему не круто? Мне кажется было бы очень удобно. В этом есть минусы?
Re: Message со встроенным форматом -
Stepashka - 19.11.2014
Quote:
Originally Posted by Kolstin
Почему не круто? Мне кажется было бы очень удобно. В этом есть минусы?
|
Да, давно известный и значительный:
Code:
"Деньги: " + 1 + (2 + 6) + 8 + ", Убийств: " + kills + "."
Что в данном случае будет в конечном варианте, конкатенация или сложение?
Да символ можно заменить, но увы практически все символы используются.
Или как вариант попробуйте при помощи конкатенация вывести дробное число у которого всегда 5 символов перед запятой, заполняем недостающее по средствам
тире, и 3 после запятой, недостающее заполнить нулями.
Re: Message со встроенным форматом -
stabker - 19.11.2014
В скобках сложение, без них конкатенация. Вроде бы так.
Re: Message со встроенным форматом -
Stepashka - 19.11.2014
Quote:
Originally Posted by stabker
В скобках сложение, без них конкатенация. Вроде бы так.
|
В том-то и дело что не факт.
Re: Message со встроенным форматом -
ZiGGi - 21.11.2014
Quote:
Originally Posted by Stepashka
Так можно делать только в интерпретируемых языках. И нет, это не круто.
|
В C++ std:: string же можно.
Re: Message со встроенным форматом -
Stepashka - 21.11.2014
Quote:
Originally Posted by ZiGGi
В C++ std:: string же можно.
|
Это не отменяет того что это интерпретация, хоть и не в интерпретируемом языке.
Re: Message со встроенным форматом -
long76 - 22.11.2014
лови перед этим создавай переменную для строки.
pawn Code:
#define SCMF(%0,%1,%2,%3,%4) format(%0, sizeof(%0),%3,%4) && SendClientMessage(%1, %2, %0)
вместо %0 вставляете имя переменной пример
pawn Code:
new tmp[256];
SCMF(tmp,playerid,0xFFFFFFFF,"Welcome to server, %s!",GetName(playerid));
Re: Message со встроенным форматом -
jhonyxakep - 28.11.2014
Quote:
Это не отменяет того что это интерпретация, хоть и не в интерпретируемом языке.
|
В каком месте работа с шаблонами это интерпретация? Просто компилятор подменяет "A"+"B" на "A".join("B")
Re: Message со встроенным форматом -
Stepashka - 28.11.2014
Quote:
Originally Posted by jhonyxakep
В каком месте работа с шаблонами это интерпретация? Просто компилятор подменяет "A"+"B" на "A".join("B")
|
Потому что это и есть интерпретация.
Re: Message со встроенным форматом -
Bombo - 28.11.2014
Quote:
Originally Posted by Stepashka
Потому что это и есть интерпретация.
|
Давайте назовём процесс компиляции интерпретацией[SARCASM]
Re: Message со встроенным форматом -
Stepashka - 28.11.2014
Quote:
Originally Posted by Bombo
Давайте назовём процесс компиляции интерпретацией[SARCASM]
|