Кибор » Кибор - Интегрированная среда разработки ботов » Вопросы и решение проблем » Отдельная тема по сокращению кода.

Страниц (5): « 1 [2] 3 4 5 »
 

11. 007wan - 02 Мая, 2019 - 06:25:19 - перейти к сообщению
а как тут? просто везде позиции и размер разные и названия
код (Отобразить)
12. Zireael - 02 Мая, 2019 - 06:52:17 - перейти к сообщению
 Цитата:
а как тут? просто везде позиции и размер разные и названия

CODE:
int pos[12]=
{10, 50, 320, 20,
20, 215, 270, 20,
99, 88, 77, 66}

string name[3]={"Один", "Два", "Три"}
for(int i=0; i<sizearray(pos)/4; i++)
messagebox(name[i]+" "+format(pos[i*4])+" "+format(pos[i*4+1])+" "+format(pos[i*4+2])+" "+format(pos[i*4+3]));

Не очень удобно из-за того что нельзя инициализировать двухмерный массив при объявлении.
13. 007wan - 03 Мая, 2019 - 03:46:06 - перейти к сообщению
Вот сократил это:
это (Отобразить)

на это (Отобразить)
С объявлением переменных*
14. Zireael - 03 Мая, 2019 - 04:01:12 - перейти к сообщению
 Цитата:
if (format(#Load_Checkbox[a][0]) == "9" )
{
Load_Checkbox[a][0] = "1";
}

Если выполняется только 1 действие, то фигурные скобки можно не ставить.
CODE:
if (format(#Load_Checkbox[a][0]) == "9")Load_Checkbox[a][0] = "1";

Зачем Load_Checkbox объявлен char? Объявить int и не потребуется постоянная конвертация formatsn(format(#Load_Checkbox[a][0]) . И сравнивать можно без format(#Load_Checkbox[a][0]).
15. 007wan - 19 Мая, 2019 - 05:35:59 - перейти к сообщению
 Zireael пишет:
Зачем Load_Checkbox объявлен char? Объявить int и не потребуется постоянная конвертация formatsn(format(#Load_Checkbox[a][0]) . И сравнивать можно без format(#Load_Checkbox[a][0]).
Не могу понять. мозг просто кипит((
(Добавление)
Было (Отобразить)

(Добавление)
Стало (Отобразить)

Где-то ошибка. 100%
(Добавление)
А, я лучше сейчас новый диалог скину готовый и посмотрим где, что и как
(Добавление)
Проблема не в создании контролов через for, а в том, что ошибка где-то в загрузке или получении статуса контролов через for
16. Zireael - 19 Мая, 2019 - 05:53:29 - перейти к сообщению
 Цитата:
ñ<sizearray(Object_Checkbox)

 Цитата:
messagebox(Load_Checkbox[c]) // пропущена ;

 Цитата:
что ошибка где-то в загрузке или получении статуса контролов

В GetPrivateProfileString надо передавать указатель на массив char, который примет результат, а Load_Checkbox[5]; это int. Поэтому получать результат в массив char, а потом его конвертировать в int.
 Цитата:
char buffer[255];
for (int c=0; c<sizearray(Object_Checkbox); c++)
{
GetPrivateProfileString ("Default", "Object_Combobox"+format(c), 0, address(#buffer[0]), 255, PathSaveSettings);
Load_Checkbox[c]=formatsn(format(#buffer[0]));
messagebox(Load_Checkbox[c]);
}
17. 007wan - 19 Мая, 2019 - 06:31:09 - перейти к сообщению
 Zireael пишет:
char buffer[255];
А буфер использовать один раз для всех галочек или тоже сделать массив буфера для 5 галочек?
18. Zireael - 19 Мая, 2019 - 06:33:02 - перейти к сообщению
 Цитата:
А буфер использовать один раз для всех галочек или тоже сделать массив буфера для 5 галочек?

Один. Всё равно результат потом переписывается в Load_Checkbox.
19. 007wan - 19 Мая, 2019 - 07:05:23 - перейти к сообщению
Как сократить это?
Код (Отобразить)
Почему Max_length = 0 и получается в if , что если 0 меньше Size, почему я не могу просто удалить эту переменную?
20. Zireael - 19 Мая, 2019 - 07:15:59 - перейти к сообщению
 Цитата:
Как сократить это?

тут нечего сокращать, разве что мелочи типа:
 Цитата:
if (Change == 1)
{
Text = "["+format(#Time[0])+"] - "+Text;
}

CODE:
if (Change)Text = "["+format(#Time[0])+"] - "+Text;

 Цитата:
почему я не могу просто удалить эту переменную?

Странный вопрос. Удалить переменную, которая используется в скрипте. Только зачем было её делать локальной, она хранит максимальную длину строки списка, а вы её обнуляете при каждом вызове функции.

Powered by ExBB FM 1.0 Final