Автоматизация и боты

 Помощь      Поиск      Пользователи
Сайт Кибор     Программируемый кликер Кибор     Видео обучение     Заказать бот

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

> Без описания
ivantu
Отправлено: 29 Апреля, 2021 - 01:25:42
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 732
Дата рег-ции: Нояб. 2013  
Репутация: 14




 Kibor пишет:
По умолчанию там появляются значения с блока [ASSOC_VAR]


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

 
 Top
Kibor
Отправлено: 29 Апреля, 2021 - 01:29:29
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8098
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 355




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

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



Пользователь
Эксперт


Покинул форум
Сообщений всего: 732
Дата рег-ции: Нояб. 2013  
Репутация: 14




 ivantu пишет:
Зачем?

для визуального восприятия в редакторе ничем не отличающихся визуально блоков.
Чтоб понять где какой Edit , нужно залезть в свойства , или сгенерировать код.
А тоб наглядно было видно.
 
 Top
Kibor
Отправлено: 29 Апреля, 2021 - 01:47:22
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8098
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 355




 ivantu пишет:
А тоб наглядно было видно.

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

Это по другому надо.
 
 Top
ivantu
Отправлено: 29 Апреля, 2021 - 01:53:21
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 732
Дата рег-ции: Нояб. 2013  
Репутация: 14




Я просто предложил, я не знаю на сколько сложно это реализовать, Вам виднее.
 
 Top
ivantu
Отправлено: 29 Апреля, 2021 - 07:08:42
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 732
Дата рег-ции: Нояб. 2013  
Репутация: 14




Скорее всего лучше даже, выводить имена переменных в поля , а не значения, так логичнее будет, да и реализация проще , наверное...
 
 Top
Kibor
Отправлено: 29 Апреля, 2021 - 12:02:57
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8098
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 355




 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] и название шаблона.

Сделал рабочее очищение кнопка.
 
 Top
Kibor
Отправлено: 29 Апреля, 2021 - 14:24:43
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8098
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 355




Циклов пока нет.

Но покажу, как можно с помощью данных шаблонов создать блок 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;
}


 
 Top
Kibor
Отправлено: 30 Апреля, 2021 - 15:23:08
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8098
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 355




Обновил архив.

Переименовал блок [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:;


На данный момент блоки нельзя еще переносить в тело цикла.
 
 Top
ivantu
Отправлено: 30 Апреля, 2021 - 20:57:57
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 732
Дата рег-ции: Нояб. 2013  
Репутация: 14




 Kibor пишет:
После END= идет то что будет означать начало блока.

опечатка.
 
 Top
Страниц (18): В начало « 8 9 10 11 [12] 13 14 15 16 » В конец
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Тестирование Кибор »


Все гости форума могут просматривать этот раздел.
Только администраторы и модераторы могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 




Powered by