007wan |
Отправлено: 09 Декабря, 2019 - 12:09:03
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Zireael пишет: Цитата: то заменить такой текст с [1] элементом(в данном случаи он является вторым по счёту) на текст "Visual Window: True".
Допустим заменили второе совпадение, т. е. останется два "Visual Window: False" , для первого и для третьего Bot. Т. е. в следующий раз указав [1] нужно будет заменить "Visual Window: False" для Bot Three? Именно так. только у меня будет цикл for, что-то подобное...
Код (Отобразить)CODE:if (message.lparam == Object_Button6)
{
sendmessage(TCM_GETITEMA, Selected_Tab, address(#TCITEMA[0]), formatiw(Object_Tab1));
for (int j=0; j<sizearray(Text_Tab); j++)
{
if (format(#Buffer1[0]) == Text_Tab[j])
{
if (Started_Script[j] == 0)
{
Started_Script[j] = 1;
Show_Controls(0, 1);
return;
}
if (Started_Script[j] == 1)
{
Started_Script[j] = 0;
Show_Controls(0, 1);
return;
}
}
}
return;
} В зависимости на какой вкладке нажали кнопку(определяет название вкладки) "Запустить"(ico), в массив запишится цифра 1 смотря какую вкладку запустили. Дальше очень просто отталкиваться от этого.
Допустим: нажали "Запустить" во вкладки "Crossout", в массив пишется для этой программе "1", так же было известно, что название этой игры имеет значение 2(порядок), потом будет искаться текст и заменяться в буфере... Всё просто пока, что . Если не понятно, я выслал тебе свой код не измененный в Личный ящик, сам увидишь всё...Не хватает лишь того, что бы находился нужный текст - определась его позиция и заменялся на нужный текст. Я же не просто так у себя в программе название игры записал в таком порядке, как и сам выводит буфер. |
|
|
Zireael |
Отправлено: 09 Декабря, 2019 - 12:22:49
|
Эксперт
Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: string s = "My Dialog{Editing Writes: 0};"+formatic(13)+formatic(10)+
"Bot One{Start_Script: False|Visual Window: False};"+formatic(13)+formatic(10)+
"Bot Two{Start Script: False|Visual Window: False};"+formatic(13)+formatic(10)+
"Bot Three{Start Script: False|Visual Window: False};";
Цитата: string s = "My Dialog{Editing Writes: 0};"+formatic(13)+formatic(10)+
"Bot One{Start_Script: False|Visual Window: True};"+formatic(13)+formatic(10)+
"Bot Two{Start Script: False|Visual Window: False};"+formatic(13)+formatic(10)+
"Bot Three{Start Script: False|Visual Window: False};";
Вот две строки. Указав [1] в первой строке заменит Visual Window: False для Bot Two, а во второй строке для Bot Three. Обратно менять True на False как собираешься, тоже как получиться? Или пофиг какого бота включать/выключать? |
|
|
007wan |
Отправлено: 09 Декабря, 2019 - 12:41:18
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Zireael пишет:
Вот две строки. Указав [1] в первой строке заменит Visual Window: False для Bot Two, а во второй строке для Bot Three. Обратно менять True на False как собираешься, тоже как получиться? Или пофиг какого бота включать/выключать?
Так у меня есть переменная Started_Script, определяющая какой бот был запущен(соотвественно статусы: 0 - запущен, 1- не запущен, изначально оба параметры нулевые).
Например,
CODE:string Text_Tab[3] = {"Klondike", "Tankionline", "Crossout"}
int Started_Script[3] = {0, 0, 0};
//первая 0 для Klondike
//вторая 0 для Tankionline
//итд..
Допустим, запустили Tankionline, значит:
CODE:Started_Script[3] = {0, 1, 0};//визуально будет выглядеть так примерно
Потом если Started_Script[1] рано получается Tankionline, то мы знаем порядковый номер, что бы изменить текст в буфере - порядковый номер будет -" 1"
Следовательно меняем вторую Start Script: False
Цитата: string s = "My Dialog{Editing Writes: 0};"+formatic(13)+formatic(10)+
"Klondike Bot{Start_Script: False|Visual Window: False};"+formatic(13)+formatic(10)+
"Tankionline Bot{Start Script: False|Visual Window: False};"+formatic(13)+formatic(10)+
"Crossout Bot{Start Script: False|Visual Window: False};";
Так как мы заменили это текст и он был запущен и обозначен в Started_Script[1] как 1.
Я понял почему что-то не так...
Ведь если перед заменой "Start Script: False" было всего 3, то после замены будет 2 и порядковые номера сместятся, я думаю пока над этим...Но чувствую, что очень легко справлюсь......Потом изложу мысль, а то сейчас даже не могу описать, что придумал, потому что кода нету по факту, а если был бы, то поковырял бы и придумал что-нибудь...
(Добавление)
007wan пишет: Ведь если перед заменой "Start Script: False" было всего 3, то после замены будет 2 и порядковые номера сместятся, я думаю пока над этим...Но чувствую, что очень легко справлюсь......Потом изложу мысль, а то сейчас даже не могу описать, что придумал, потому что кода нету по факту, а если был бы, то поковырял бы и придумал что-нибудь...
Допустим он должен найти "Start Script: False" столько, чем равна sizearray(Text_Tab), тоесть 3.
и должен найти потом "Start Script: True" и сравнивать найденные фрагменты(если True, то 1, иначе 0) со Started_Script, а потом уже заменять нужные... Не могу сказать подробнее, нету кода...
(Добавление)
Ну пожалуйста можно код?
Главное в нем должно быть:
1)Узнать есть ли нужный текст и сколько их.
2)Заменить на другой.
\
(Добавление)
Либо у меня другой вариант: Создать несколько NamedPipe и каждый просматривать и вписывать нужное, но это мне кажется уже слишком далеко |
|
|
Zireael |
Отправлено: 09 Декабря, 2019 - 16:18:56
|
Эксперт
Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: Дайте код
6 страниц этой темы просишь код. Кстати, примеров я дал предостаточно, но тебя они каждый раз не устраивают. Потому что сначала надо определиться что и как будет работать.
Цитата: Узнать есть ли нужный текст и сколько их.
Это элементарный код. Если бы кто-то не засорял темы, то можно бы было его найти. |
|
|
007wan |
Отправлено: 09 Декабря, 2019 - 16:49:07
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Я представляю как это будет работать и уже точно определился, потому что кроме буфера: пайпы не умею создавать, читать с них текст и записывать,а текстовый файл как бы виден и тоже не подходит , фтп файл тем более не подходит, это вообще интернет.
Примеров много, я не спорю - поиск на форуме не работает, из-за этого .
Давайте договоримся? Значит вы мне последний код, а я в эту тему больше по регуляркам не буду писать.
Объясню почему предыдущий код(коды) по этой теме нн устраивали, потому что я допер, что с таким кодом было невозможно работать с циклом, т.е for ,а значит пришлось бы как минимум 5 строчек для каждой проге(игры)
Заранее извиняюсь ща 6 страниц, чето не заметил |
|
|
Zireael |
Отправлено: 09 Декабря, 2019 - 16:59:16
|
Эксперт
Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017
Репутация: 585
|
code (Отобразить)CODE:string s = "My Dialog{Editing Writes: 0};"+formatic(13)+formatic(10)+
"Bot One{Start Script: False|Visual Window: False};"+formatic(13)+formatic(10)+
"Bot Two{Start Script: False|Visual Window: False};"+formatic(13)+formatic(10)+
"Bot Three{Start Script: False|Visual Window: False};";
messagebox(s);
replace(#s, "Visual Window: False", "Visual Window: True", 1);
messagebox(s);
replace(#s, "Start Script: False", "Start Script: True", 2);
messagebox(s);
// 1 - строка, в которой искать
// 2 - что искать
// 3 - чем заменить
// 4 - какое по счёту (от 0) совпадение заменить
function replace(string #str, string pattern, string replace, int index)
{
string s[99], temp; int x=-1;
int count_string=regexsearch(sizearray(s), #s[0], str, ".+(?:[\r\n]|\Z)", MULTILINE);
if(count_string+1>index)
{
for(int i=0; i<count_string; i++)
{
if(regexsearch(1, #temp, s[i], pattern))x++;
if(x==index)
{
regexreplace(1, #s[i], s[i], pattern, replace);
break;
}
}
str="";
for(i=0; i<count_string; i++)str=str+s[i];
}
} |
|
|
007wan |
Отправлено: 22 Апреля, 2020 - 17:51:45
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Zireael пишет: Приводите несколько примеров. Как узнать что именно слова в 2-4 строках не нужны? сам не знаю. Это с сайта. 2-строка непонимаю к чему относится. 3- фракции: бешеные могут быть, огнепоклонники, основатели, скитальцы итд. 4 строка-тип: кабины, вооружение, модули, контейнеры итд
(Добавление)
Zireael пишет: Приводите несколько примеров. Как узнать что именно слова в 2-4 строках не нужны? вторая строчка - это любая цифра целая и только |
|
|
|