PDA

Просмотр полной версии : [Вопрос] Вопрос про string



DmitriyVasilev
06.03.2019, 17:45
Здравствуйте, объясните зачем обнулять тут переменную, я просто не шарю и когда надо их обнулять. Спасибо:search:
case 1755:
{
if(!response) return 1;
string = ""; //вот тут
for(new i = 1; i <= TotalBizz; i++)
{
if(BizzInfo[i][bType] != listitem+1) continue;
format(YCMDstr,128,"{FFFFFF}%s {0076FC}%i вирт\n",BizzInfo[i][bMessage], BizzInfo[i][bPrice]);
strcat(string,YCMDstr);
}
return ShowPlayerDialog(playerid,0,DIALOG_STYLE_MSGBOX, !"Мониторинг бизнесов",string, !"x", "");
}

Seviel
06.03.2019, 19:40
strcat объединяет строки, если не отчистить string, то перед той строкой что тебе нужно будет то что было в string.

Допустим в string находился следующий текст: Админ Dima228 кикнул Dime227
То если не отчищать string и использовать твой код то получиться что-то вроде этого:


Админ Dima228 кикнул Dime227Сообщение бизнесу $1488
Сообщение бизнесу 2$1489

DeimoS
06.03.2019, 20:18
Во-первых, почитай вот это (http://pro-pawn.ru/showthread.php?16533-%D0%92%D0%BE%D0%BF%D1%80%D0%BE%D1%81-%D0%BF%D0%BE-Stack-heap-size&p=92930&viewfull=1#post92930).

Во-вторых, если всё же решишься дальше использовать глобальную переменную, то отчищать её нужно только тогда, когда используются функции, которые этого не делают (strcat и т.п.) или когда ты скрепляешь массив через format:

// Вот тут если не отчистить и string будет глобальной переменной, то каждый раз к новой строке будет прикрепляться старый текст
format(string, sizeof(string), "%s привет!", string);

//Вот в этом случае отчищать уже не нужно, так как format начнёт запись с нулевой ячейки и сама перезапишет старый текст
format(string, sizeof(string), "%s привет!", player_name);

DmitriyVasilev
30.03.2019, 17:03
те если я здесь поставлю локальную переменную, то обнулять ее не нужно?

Paradox
30.03.2019, 18:25
те если я здесь поставлю локальную переменную, то обнулять ее не нужно?

не нужно.