Кибор » Кибор - Интегрированная среда разработки ботов » Тестирование Кибор » Новый Визуальный редактор

Страниц (18): В начало « ... 8 9 10 11 [12] 13 14 15 16 ... » В конец
 

111. ivantu - 28 Апреля, 2021 - 17:25:42 - перейти к сообщению
 Kibor пишет:
По умолчанию там появляются значения с блока [ASSOC_VAR]


Я говорил про отображение при создании интерфейса, прям в редакторе, а не когда блок создали.
Не знаю возможно такое сделать...

112. Kibor - 28 Апреля, 2021 - 17:29:29 - перейти к сообщению
 ivantu пишет:
Я говорил про отображение при создании интерфейса, прям в редакторе, а не когда блок создали.

Зачем?
Эти поля предназначены для ввода и вывода сохраненной информации.
Когда нажимается Принять, переписывается блок [ASSOC_VAR] который отвечает за это.
113. ivantu - 28 Апреля, 2021 - 17:34:29 - перейти к сообщению
 ivantu пишет:
Зачем?

для визуального восприятия в редакторе ничем не отличающихся визуально блоков.
Чтоб понять где какой Edit , нужно залезть в свойства , или сгенерировать код.
А тоб наглядно было видно.
114. Kibor - 28 Апреля, 2021 - 17:47:22 - перейти к сообщению
 ivantu пишет:
А тоб наглядно было видно.

И из за этого вводить в синтаксис не нужную инфу?
Его же где то надо хранить..

Это по другому надо.
115. ivantu - 28 Апреля, 2021 - 17:53:21 - перейти к сообщению
Я просто предложил, я не знаю на сколько сложно это реализовать, Вам виднее.
116. ivantu - 28 Апреля, 2021 - 23:08:42 - перейти к сообщению
Скорее всего лучше даже, выводить имена переменных в поля , а не значения, так логичнее будет, да и реализация проще , наверное...
117. Kibor - 29 Апреля, 2021 - 04:02:57 - перейти к сообщению
 ivantu пишет:
выводить имена переменных в поля

Один из вариантов.. Тоже думал так.. Посмотрим.

Обновил архив.
Доработал сортировку логики.

Если поставить галку Без сортировки

Код будет генерировать так с этой каши что на скрине, после каждой строки Goto:
CODE:
if (FindHeapcolor(#Color0[0], #Kol0[0], 2, 2, #X, #Y)>0) goto KIB_3;
goto KIB_9;
KIB_1: MessageBoxA(NULL, "Это подключенная Api функция", "Заголовок", NULL); goto KIB_Exit;
KIB_2: Proc=OpenProcess(#win0); goto KIB_11;
KIB_3: ReadText("C:\basetext.sib", #Text, 1, 0, 0, 0); goto KIB_8;
KIB_4: Rez=test(#win0); goto KIB_2;
KIB_5: ty(); goto KIB_10;
KIB_6: if (FindImage(#Image0[0][0], 1, #K_kib, #X_Kib[0], #Y_kib[0], 0)>0) goto KIB_9;
goto KIB_11;
KIB_7: Rez=test(#win0); goto KIB_6;
KIB_8: Proc=OpenProcess(#win0); goto KIB_12;
KIB_9: ReadText("C:\basetext.sib", #Text, 1, 0, 0, 0); goto KIB_5;
KIB_10: MessageBoxA(NULL, "Это подключенная Api функция", "Заголовок", NULL); goto KIB_4;
KIB_11: ty(); goto KIB_13;
KIB_12: if (FindImage(#Image0[0][0], 1, #K_kib, #X_Kib[0], #Y_kib[0], 0)>0) goto KIB_7;
goto KIB_7;
KIB_13: Proc=OpenProcess(#win0); goto KIB_1;
KIB_Exit:;


Без галки (Будет сортироваться), так. Goto и метки остались там где надо. По возможности код идет по логике выполнения:
CODE:
if (FindHeapcolor(#Color0[0], #Kol0[0], 2, 2, #X, #Y)>0) goto KIB_3;
goto KIB_9;
KIB_3: ReadText("C:\basetext.sib", #Text, 1, 0, 0, 0);
Proc=OpenProcess(#win0);
FindImage(#Image0[0][0], 1, #K_kib, #X_Kib[0], #Y_kib[0], 0);
Rez=test(#win0); goto KIB_6;
KIB_t15: Proc=OpenProcess(#win0);
KIB_11: ty();
Proc=OpenProcess(#win0);
MessageBoxA(NULL, "Это подключенная Api функция", "Заголовок", NULL); goto KIB_Exit;
KIB_6: if (FindImage(#Image0[0][0], 1, #K_kib, #X_Kib[0], #Y_kib[0], 0)>0) goto KIB_9;
goto KIB_11;
KIB_9: ReadText("C:\basetext.sib", #Text, 1, 0, 0, 0);
ty();
MessageBoxA(NULL, "Это подключенная Api функция", "Заголовок", NULL);
Rez=test(#win0); goto KIB_t15;
KIB_Exit:;




(Добавление)
Еще надо доработать, после тестов что тут все нормально.

Сделал сохранение. Сохраняет на C:\SAVE_VE.txt
Можно тестировать логику удобнее.
Для открытия сохранения должны быть все шаблоны, с которых делался проект.
Вся информация в них. В сохранение только блок [ASSOC_VAR] и название шаблона.

Сделал рабочее очищение кнопка.
118. Kibor - 29 Апреля, 2021 - 06:24:43 - перейти к сообщению
Циклов пока нет.

Но покажу, как можно с помощью данных шаблонов создать блок Loop Он есть а папке с программой.

Данный блок будет давать возможность указывать свое, уникальное имя переменной счетчику, которая будет объявляться глобально (для возможности осуществлять вложенные циклы).
Начальное значение переменной.
Конечное значение переменной, при котором выйдет из цикла.

Код блока:
CODE:
[APPEARANCE]
COLOR = 0, 0, 0;
SIZE_X = 16;
SIZE_Y =2;
[END]

[INTERFACE]
DIALOG, "Loop", 340, 124;
STATIC, "Начальное значение", 8, 8, 108, 20;
EDIT, 120, 8, 56, 20, int SS;
STATIC, "Менее", 200, 8, 52, 20;
EDIT, 256, 8, 68, 20, int KK;
STATIC, "Переменная цикла", 8, 36, 96, 20;
EDIT, 120, 36, 56, 20, int Var;
BUTTON_OK, "Принять", 112, 64, 100, 24;
BUTTON_CANCEL, "Закрыть", 224, 64, 100, 24;
[END]

[ASSOC_NUMBER]
Var
[END]

[ASSOC_VAR]
Var = N;
SS = 0;
KK = 5;
dVar = #~Var~;
[END]

[GLOBAL_VAR]
int ~Var~=~SS~;
[END]


[FUNCTION_BODY]
function (int #n, int k)
{
n++;
if (n<=k) return 0;
return 1;
}
[END]

[FUNCTION_CALL]
(dVar, KK)
[END]


[FUNCTION_LOGIC]
==1
[END]


Код который генерирует схема на скриншоте (средний MessageBox будет показан столько, сколько итераций цикла):
CODE:
#define NULL 0

int N = 0;

external(INT, "MessageBoxA", "MessageBoxA", "user32.dll");

MessageBoxA(NULL, "Начало", "Заголовок", NULL);
KIB_1: if (Loop(#N, 5)==1) goto KIB_3;
MessageBoxA(NULL, "Цикл", "Заголовок", NULL); goto KIB_1;
KIB_3: MessageBoxA(NULL, "Конец", "Заголовок", NULL); goto KIB_Exit;
KIB_Exit:;

function Loop(int #n, int k)
{
n++;
if (n<=k) return 0;
return 1;
}


119. Kibor - 30 Апреля, 2021 - 07:23:08 - перейти к сообщению
Обновил архив.

Переименовал блок [FUNCTION_CALL] в [CALL]

Добавил не обязательный блок [GROUP_BLOCK]

При указание этого блока создается кнопка, которая позволяет вставлять Блоки имеющие обозначение {} (В Кибор)

CODE:
[GROUP_BLOCK]
START = {
END = }
[END]


После START= идет то что будет означать начало блока.
После END= идет то что будет означать конец блока.

Разделитель - перенос строки.

Указание данного блока дает возможность создавать шаблоны циклов, функций и тд.

Вставленный в виз редактор такой Блок будет иметь свойства изменение размера с помощью мыши и вставки в середину других блоков. Переход в такой блок извне будет запрещен. Выход опционально, указанным в том же блоке GROUP_BLOCK.
С циклов выход возможен. С тела функции нет (хотя в Кибор можно выходить с функции по global goto, поэтому для Кибор с функции в шаблоне можно будет указывать разрешенный выход с тела функции.

Код который будет генерировать такой блок будет обрамлен тем что указано в блоке [GROUP_BLOCK].

Код шаблона цикла for
CODE:
[INTERFACE]
DIALOG, "For", 619, 109;
STATIC, "Имя переменной", 8, 4, 92, 20;
EDIT, 108, 4, 100, 20, int Var;
STATIC, "Начальное значение", 8, 28, 108, 20;
EDIT, 120, 28, 72, 20, int Init;
STATIC, "Условие", 200, 28, 44, 20;
EDIT, 248, 28, 232, 20, int Cond;
STATIC, "Счетчик", 488, 28, 44, 20;
EDIT, 536, 28, 72, 20, int Counter;
BUTTON_OK, "Принять", 400, 56, 100, 20;
BUTTON_CANCEL, "Закрыть", 508, 56, 100, 20;
[END]

[APPEARANCE]
COLOR = 0, 0, 0;
SIZE_X = 28;
SIZE_Y =28;
[END]

[ASSOC_VAR]
Var = N;
Init = 0;
Cond = N<5;
Counter = N++;

cInit = ~Var~=~Init~;
[END]

[GLOBAL_VAR]
int ~Var~;
[END]

[CALL]
(cInit; Cond; Counter)
[END]

[GROUP_BLOCK]
START = {
END = }
[END]




Данный шаблон позволяет указывать
Имя переменной, которая будет объявлена глобально (если отсутствует), это дает возможность создавать вложенные циклы с разными переменными.
Начальную инициализацию переменной.
Код условия.
Код счетчика.

Пример создаваемого кода:

CODE:
int N;
int A;

for(N=0; N<5; N++)
{
}
for(A=50; A<=500; A=A+10)
{
}
goto KIB_Exit;
KIB_Exit:;


На данный момент блоки нельзя еще переносить в тело цикла.
120. ivantu - 30 Апреля, 2021 - 12:57:57 - перейти к сообщению
 Kibor пишет:
После END= идет то что будет означать начало блока.

опечатка.

Powered by ExBB FM 1.0 Final