Просмотр полной версии : [Вопрос] тернарный оператор
Batya_Montes
04.03.2017, 13:06
собственно вопрос вот в чем ..
в моде есть чет тип такого - пароль: %s
в формате стоит условие для заполнения %s - (us[playerid][u_pass] == '0') ? ("не заполнил") : "заполнил")
возможно ли вывести вместо слова заполнил переменную ? пробовал вот так, но компилятор просто крашился
(perem_pass[0] == '0') ? ("не заполнил") : perem_pass)
(!perem_pass[0]) ? ("не заполнил") : (perem_pass)
Batya_Montes
04.03.2017, 13:17
(!perem_pass[0]) ? ("не заполнил") : (perem_pass)
компилятор крашится если вместо ("123") попытаться вывести переменную
компилятор крашится если вместо ("123") попытаться вывести переменную
Как он может крашится? Все прекрасно компилируется. Покажите полностью как форматируйте
Batya_Montes
04.03.2017, 13:25
format(string, sizeof string, fmt_str, (!us[playerid][u_pass][0]) ? ("не заполнил") : (us[playerid][u_pass]))
format(string, sizeof string, fmt_str, (!us[playerid][u_pass][0]) ? ("не заполнил") : (us[playerid][u_pass]))
Что за fmt_str? Естественно так ничего работать не будет, ибо нечего форматировать.
Например подобный код, будет работать:
format(string, sizeof string, "%s%s",fmt_str, (!us[playerid][u_pass][0]) ? ("не заполнил") : (us[playerid][u_pass]))
Batya_Montes
04.03.2017, 13:29
Что за fmt_str? Естественно так ничего работать не будет, ибо нечего форматировать.
Например подобный код, будет работать:
format(string, sizeof string, "%s%s",fmt_str, (!us[playerid][u_pass][0]) ? ("не заполнил") : (us[playerid][u_pass]))
fmt_str это подсчет форматируемой строки, static const fmt_str[] = "пароль %s"; new string[sizeof fmt_str - 2 + 16];
fmt_str это подсчет форматируемой строки, static const fmt_str[] = "пароль %s"; new string[sizeof fmt_str - 2 + 16];
А что, сложно подсчитать 7 символов?
new string[7+16+1];
format(string, sizeof(string), "пароль %s", (!us[playerid][u_pass][0]) ? ("не заполнил") : (us[playerid][u_pass]))
Batya_Montes
04.03.2017, 13:35
А что, сложно подсчитать 7 символов?
new string[7+16+1];
format(string, sizeof(string), "пароль %s", (!us[playerid][u_pass][0]) ? ("не заполнил") : (us[playerid][u_pass]))
это для примера 7, на деле их гораздо больше
Это баг компилятора. Пару месяцев назад это уже обсуждалось на форуме. В данном случае проще всего отказаться от тернарного условия и переделать на обычные
- - - Добавлено - - -
Вот (http://pro-pawn.ru/showthread.php?14347-error-033-array-must-be-indexed-%28variable-unknown-%29&highlight=%D0%BA%D0%BE%D0%BC%D0%BF%D0%B8%D0%BB%D1%8F%D1%82%D0%BE%D1%80%D0%B0) та тема
Powered by vBulletin® Version 4.2.0 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot