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);
// Тут удаление.
В общем, размер форматируемой строки я подсчитываю этим (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);
// Тут удаление.