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

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

131. Kibor - 19 Марта, 2021 - 14:28:41 - перейти к сообщению
Paskuda ,
А сейчас с буфером как?
Проверяйте значение переменной и что функция возвращает.
132. Paskuda - 19 Марта, 2021 - 14:55:01 - перейти к сообщению
 andre пишет:
В блокноте работает.

Да, в блокноте работает нормально. Удалось выяснить что конкретно в игре иногда не срабатывают keydown(CONTROL) и keydown(SHIFT), играю с ноута.

 Zireael пишет:
В каком коде?
В приведённом коде не объявлены некоторые переменные.

 Kibor пишет:
А сейчас с буфером как?
Проверяйте значение переменной и что функция возвращает.


Все осталось по прежнему, разве что функция стала фиолетовой. Чтение с буфера срабатывает только после messagebox(); Вот конкретно проблемный участок кода оформил в виде отдельного скрипта
CODE:

int N,n;
win win_game=window ("MGCloud", "PlaykeyContainerClass", -1);
string
Name[10],
Patch="C:\Soft\kibor_set\Sorti\";

if(fopen (Patch+"6_Список.txt", "r")!=0) //В блокноте 6 наименований
{
N=freadlineall(#Name[0], 20);fclose();
}

activate(win_game);pause(1000);
sendlanguage("00000419",win_game);
//-----------------------------------
int x=30;
loop(10)
{
mousemove(x, 305);pause(500);
keydown(SHIFT);pause(500);
mouse(LEFT);pause(500);
keyup(SHIFT);pause(500);

mousemove(1025, 250);pause(500);
mousedbl(LEFT);pause(500);
keydown(CONTROL);pause(500);
key(67);pause(500);
keyup(CONTROL);pause(500);
key(ESCAPE);pause(500);

string name;
int r;

r=readclipboard(name);
//messagebox(r); //Так работает
//messagebox(name);
pause(2000);

for(n=0; n<N; n++)
{
if(Name[n]==name)
{
x=x+80;
break;
}
}
if(n==N)
{
x=x+40;
}
}
133. Kibor - 19 Марта, 2021 - 15:01:10 - перейти к сообщению
Это вызывает ошибку?

Скопировать строку ниже
то что в буфере

CODE:
string name="";
int r;

r=readclipboard(name);
if(r==-1)messagebox("ошибка r");
if(name!="то что в буфере")messagebox("ошибка переменной");
134. Zireael - 19 Марта, 2021 - 15:13:55 - перейти к сообщению
 Цитата:
messagebox(r); //Так работает
//messagebox(name);

Тогда что не работает?
 Цитата:
Name[10]
freadlineall(#Name[0], 20);

Выделен массив на 10 строк, а читаете 20, если в файле будет больше 10 строк, то будет крит.
135. Paskuda - 19 Марта, 2021 - 16:07:51 - перейти к сообщению
 Zireael пишет:
Выделен массив на 10 строк, а читаете 20, если в файле будет больше 10 строк, то будет крит.
В файле 6 строк, я там в коменте написал

 Zireael пишет:
Тогда что не работает?

 Kibor пишет:
Скопировать строку ниже
то что в буфере


Итак, у меня цикл шифтует в чат названия, затем копирует их из чата в буфер из буфера в переменную и сравнивает со списком. Если после readclipboard() не вставить любое сообщение messagebox() то текст из буфера не копируется в переменную, я не знаю почему так, может баг, вот еще раз мой код, ошибка возникает уже на 2 цикле если не вставлять messagebox("Бла бла"Подмигивание
CODE:

int N,n;
win win_game=window ("MGCloud", "PlaykeyContainerClass", -1);
string
Name[10],
Patch="C:\Soft\kibor_set\Sorti\";

if(fopen (Patch+"6_Список.txt", "r")!=0) //В блокноте 6 наименований
{
N=freadlineall(#Name[0], 20);fclose();
}

activate(win_game);pause(1000);
sendlanguage("00000419",win_game);
//-----------------------------------
int x=30;
for(int i=0; i<10; i++)
{
mousemove(x, 305);pause(500);
keydown(SHIFT);pause(1000);
mouse(LEFT);pause(500);
keyup(SHIFT);pause(500);

mousemove(1025, 250);pause(500);
mousedbl(LEFT);pause(500);
keydown(CONTROL);pause(1000);
key(67);pause(500);
keyup(CONTROL);pause(500);
key(ESCAPE);pause(500);

string name="";
int r;

r=readclipboard(name);
if(r==-1)
messagebox("ошибка r");

//messagebox("Бла бла"); //Любое сообщение
//pause(2000);

if(i==0 && name!="Имя 1")
{
messagebox("ошибка переменной");
}
if(i==1 && name!="Имя 2")
{
messagebox("ошибка переменной");
}

for(n=0; n<N; n++)
{
if(Name[n]==name)
{
x=x+80;
break;
}
}
if(n==N)
{
x=x+40;
}
}


Надеюсь понятно объяснил
136. Kibor - 19 Марта, 2021 - 16:16:30 - перейти к сообщению
 Paskuda пишет:
Итак, у меня цикл шифтует в чат названия, затем копирует их из чата в буфер из буфера в переменную и сравнивает со списком. Если после readclipboard() не вставить любое сообщение messagebox() то текст из буфера не копируется в переменную, я не знаю почему так, может баг, вот еще раз мой код, ошибка возникает уже на 2 цикле если не вставлять messagebox("Бла бла"

Я задал простой вопрос.
Выложенный мной код работает?
137. Zireael - 19 Марта, 2021 - 16:17:40 - перейти к сообщению
 Цитата:
текст из буфера не копируется в переменную

С чего сделано такое утверждение?
Запустите отладчик, поставьте галку сканировать значения переменных и запустите код. Что будет в переменной name?
138. Paskuda - 19 Марта, 2021 - 16:53:30 - перейти к сообщению
 Kibor пишет:
Я задал простой вопрос.
Выложенный мной код работает?

У меня там значения в буфере меняются, да код работает, вызывается ошибка переменной
CODE:

string name="";
int r;

r=readclipboard(name);
if(r==-1)messagebox("ошибка r");
if(i==0 && name!="Имя 1")messagebox("ошибка переменной");
if(i==1 && name!="Имя 2")messagebox("ошибка переменной");


 Zireael пишет:
С чего сделано такое утверждение?
Запустите отладчик, поставьте галку сканировать значения переменных и запустите код. Что будет в переменной name?

Фрагмент 1 варианта отладки:
for ( int i = 0 ; i'-842150451' < 10 ; i'-842150451' ++ )
...
string name = " "
r = readclipboard ( name'' )
if ( r'1' == - 1 )
if ( i'0' == 0 && name'Имя 1' != " Имя 1 " )
if ( i'0' == 1 && name'Имя 1' != " Имя 2 " )
...
string name = " "
r = readclipboard ( name'' )
if ( r'1' == - 1 )
if ( i'1' == 0 && name'Имя 1' != " Имя 1 " )
if ( i'1' == 1 && name'Имя 1' != " Имя 2 " )
messagebox ( " ошибка переменной " )

2 вариант:
for ( int i = 0 ; i'-842150451' < 10 ; i'-842150451' ++ )
...
string name = " "
r = readclipboard ( name'' )
if ( r'1' == - 1 )
messagebox ( " Бла бла " )
pause ( 2000 )
if ( i'0' == 0 && name'Имя 1' != " Имя 1 " )
if ( i'0' == 1 && name'Имя 1' != " Имя 2 " )
...
string name = " "
r = readclipboard ( name'' )
if ( r'1' == - 1 )
messagebox ( " Бла бла " )
pause ( 2000 )
if ( i'1' == 0 && name'Имя 2' != " Имя 1 " )
if ( i'1' == 1 && name'Имя 2' != " Имя 2 " )
...
string name = " "
r = readclipboard ( name'' )
if ( r'1' == - 1 )
messagebox ( " Бла бла " )
pause ( 2000 )
if ( i'2' == 0 && name'Имя 3' != " Имя 1 " )
if ( i'2' == 1 && name'Имя 3' != " Имя 2 " )
...
139. Zireael - 19 Марта, 2021 - 17:21:44 - перейти к сообщению
Может не срабатывает Ctrl+C и readclipboard вообще не причём. Это же легко проверить.
CODE:
string name="";

writeclipboard("Имя 1");
readclipboard(name);
textout(0, 0, 0, name, 1);
pause(2000);

writeclipboard("Имя 2");
readclipboard(name);
textout(0, 0, 0, name, 1);
pause(2000);

writeclipboard("Имя 3");
readclipboard(name);
textout(0, 0, 0, name, 1);
pause(2000);
140. Kibor - 20 Марта, 2021 - 01:08:25 - перейти к сообщению
 Paskuda пишет:
У меня там значения в буфере меняются, да код работает, вызывается ошибка переменной

Я не спрашиваю что где меняется. Я спрашиваю исключительно по этому коду и действиям: Для его теста надо перезапустить компьютер. НИЧЕГО не запускать своего. Выполнить этот код скопировав в буфер сначала текст приведенный. И четко описать что получается.


Скопировать строку ниже
то что в буфере

CODE:
string name="";
int r;

r=readclipboard(name);
if(r==-1)messagebox("ошибка r");
if(name!="то что в буфере")messagebox("ошибка переменной");



============

Никто не знает что и как еще юзает ваш буфер обмена.
Поэтому делайте такой тест.

Powered by ExBB FM 1.0 Final