PDA

Просмотр полной версии : [Вопрос] Несколько переменных



PawnoNoob
28.12.2016, 11:29
Приветствую. Появился вопрос насчёт переменных. Возможно, он покажется Вам немного смешным...
В общем, размер форматируемой строки я подсчитываю этим (http://pro-pawn.ru/showthread.php?13388-%D0%9F%D0%BE%D0%B4%D1%81%D1%87%D1%91%D1%82-%D1%80%D0%B0%D0%B7%D0%BC%D0%B5%D1%80%D0%B0-%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82%D0%B8%D1%80%D1%83%D0%B5%D0%BC%D0%BE%D0%B9-%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8) способом, но вчера мне пришла в голову мысль "А что делать, если будет две строки?".

Например вот так:

static const delacc_request[] = "DELETE FROM `accounts` WHERE `name` = '%s'";
new query[sizeof(delacc_request) + (-2+MAX_PLAYER_NAME)];
format(query, sizeof(query), delacc_request, nickname);
// Тут сам запрос удаления.
static const show_info[] = "Аккаунт %s был удалён администратором %s за нарушение правил сервера.";
new string[sizeof(show_info) + (-2+MAX_PLAYER_NAME) + (-2+MAX_PLAYER_NAME)];
format(string, sizeof(string), show_info, nickname, p_info[playerid][name]);
// Тут оповещение игроков/администрации (не так важно)
Или лучше сделать так:


static const delacc_request[] = "DELETE FROM `accounts` WHERE `name` = '%s'";
static const show_info[] = "Аккаунт %s был удалён администратором %s за нарушение правил сервера.";
new string[sizeof(show_info) + (-2+MAX_PLAYER_NAME) + (-2+MAX_PLAYER_NAME)];
format(string, sizeof(string), show_info, nickname, p_info[playerid][name]);
// Тут оповещение
format(string, sizeof(string), delacc_request, nickname);
// Тут удаление.

VVWVV
28.12.2016, 11:46
Второй вариант лучше тем, что в нём не будет генерироваться вторая инструкция FILL (данная инструкция заполняет массив нулями).

PawnoNoob
28.12.2016, 11:53
Второй вариант лучше тем, что в нём не будет генерироваться вторая инструкция FILL (данная инструкция заполняет массив нулями).

А запрос в чат не выведет? (или наоборот:hang1:)

VVWVV
28.12.2016, 12:00
А запрос в чат не выведет? (или наоборот:hang1:)

Нет, ведь используется функция format.

PawnoNoob
28.12.2016, 12:34
Нет, ведь используется функция format.

А, понятненько. Огромное спасибо :)