Paskuda ,
А сейчас с буфером как?
Проверяйте значение переменной и что функция возвращает.
131. Kibor - 19 Марта, 2021 - 14:28:41 - перейти к сообщению
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;
}
}
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("ошибка переменной");
int r;
r=readclipboard(name);
if(r==-1)messagebox("ошибка r");
if(name!="то что в буфере")messagebox("ошибка переменной");
134. Zireael - 19 Марта, 2021 - 15:13:55 - перейти к сообщению
Цитата:
messagebox(r); //Так работает
//messagebox(name);
//messagebox(name);
Тогда что не работает?
Цитата:
Name[10]
freadlineall(#Name[0], 20);
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;
}
}
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("ошибка переменной");
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?
Запустите отладчик, поставьте галку сканировать значения переменных и запустите код. Что будет в переменной 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);
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("ошибка переменной");
int r;
r=readclipboard(name);
if(r==-1)messagebox("ошибка r");
if(name!="то что в буфере")messagebox("ошибка переменной");
============
Никто не знает что и как еще юзает ваш буфер обмена.
Поэтому делайте такой тест.