Кибор » Кибор - Интегрированная среда разработки ботов » Вопросы и решение проблем » goto из #include

Страниц (1): [1]
 

1. grBIN - 12 Марта, 2018 - 16:31:44 - перейти к сообщению
Как я понял, код из #include перед компиляцией скрипта тупо копируется в тело основного скрипта.

Если в #include есть goto то выйдет ошибка "Отсутствует метка GOTO" пример:
Код test.txt
CODE:
messagebox("Зашли в инклуд");
goto a;

основной код:
CODE:
a: messagebox("Стартанули");
sleep(500);
#include "C:\test.txt"

Скрин
2. Kibor - 12 Марта, 2018 - 17:24:30 - перейти к сообщению
 grBIN пишет:
Как я понял, код из #include перед компиляцией скрипта тупо копируется в тело основного скрипта.

Так эта директива везде работает.

По поводу остального та же само как и везде. Цитата из справки Директива #include. Реализована возможность разбить скрипт по разным файлам.
синтаксис
 Цитата:
#include "C:\Program Files (x86)\Kibor\liba.txt"


Вместо этой строки при обработке скрипта вставится содержимое файла C:\Program Files (x86)\Kibor\liba.txt
При этом в основном скрипте станут доступные глобальные переменные (объявленные не в функциях..) этого файла и функции.
Поэтому надо следить что бы глобальные переменные и функции не имели одинаковых названий в разных подключаемых файлах.
На метки переходов goto это не распространяется.
3. grBIN - 12 Марта, 2018 - 20:17:46 - перейти к сообщению
 Kibor пишет:
На метки переходов goto это не распространяется.

Сколько раз штудировал справку ни разу не обращал на это внимание T_T

Не знаю где это еще может пригодиться, но например у меня таймер, диалоги и некоторый функционал скрипта в отдельных файлах.

1 раз вставил в тело скрипта с помощью #include и потом не нужно его там каждый раз искать, когда решишь что то изменить, а просто открываешь в соседней вкладке-___-
Раскоментил и на месте проверил правильно ли все работает, не запуская весь скрипт.

P.S. Проблему решил с помощью дополнительной переменной.
Допустим таймер в закинут в #include, и нужно при нажатии на кнопку использовать goto start_script;

timer.txt
CODE:
CREATE_TIMER(0, 200)
{

if(flag_button0[0]>0) // флаг нужной кнопки
{
flag_button0[0]=0;
hidedialog(0); // закрываем диалог если нужно
test=1; //вместо goto меняем значение переменной
}

}


тело:
CODE:
#include "C:\dialog_0.txt"
#include "C:\timer.txt"
int test=0; // доп. переменная

enabletimer(0);
loop()
{
if(test>0){test=0; goto start_script;}
sleep(10);
}


messagebox("этого мы никогда не увидим");



start_script: messagebox("Запуск");

Powered by ExBB FM 1.0 Final