Помогите пожалуйста решить проблему, я более чем уверен она связана с моей полной некомпетентностью, но информацию не смог найти.
Стоит задача. распознать числа на экране. Вот схематическая картинка.
(для просмотра ссылки Вам необходимо авторизоваться)
т.е. цифр в строке может быть разное количество, и они находятся в диапазоне от 0-1000000.
Цифра распознал, записал их в переменную типа string (Text[4])
т.е .я имею что
Text[0]=17 8
Text[1]=100 5
Text[2]=76 56 98
Text[3]=856123
Как "выдрать" из этого текста (строки string) каждое число по отдельности?
что бы привести к виду:
ch[0]=17
ch[1]=8
ch[2]=100
ch[3]=5
и так далее, где ch = int.
p.s. еще раз прошу прощения за некомпетентность и "гуманитарность" вопроса.
1. KeSeG - 08 Сентября, 2018 - 07:39:39 - перейти к сообщению
2. Zireael - 08 Сентября, 2018 - 07:49:53 - перейти к сообщению
http://kibor-bot.com/forum/topic...m=6&topic=65
Если не разберетесь, то вечером напишу как сделать.
Если не разберетесь, то вечером напишу как сделать.
3. Kibor - 08 Сентября, 2018 - 08:05:59 - перейти к сообщению
CODE:
string Text[4];
int ch[100];
int k;
Text[0]="17 8";
Text[1]="100 5";
Text[2]="76 56 98";
Text[3]="856123";
ffn(#Text[0], 4, #ch[0], #k);
for (int f=0; f<k; f++)
{
messagebox (ch[f]);
}
function ffn(string #tx, int p, int #tc[0], int #tk)
{
string t;
char c[1000];
int sz;
tk=0;
for (int n=0; n<p; n++)
{
sz=size(tx[n]);
strcpy(#c[0], Text[n]);
t="";
for (int x=0; x<sz; x++)
{
if (c[x]==' ')
{
tc[tk]=formatsn(t);
tk++;
t="";
}
else t=t+c[x];
}
tc[tk]=formatsn(t);
tk++;
t="";
}
}
int ch[100];
int k;
Text[0]="17 8";
Text[1]="100 5";
Text[2]="76 56 98";
Text[3]="856123";
ffn(#Text[0], 4, #ch[0], #k);
for (int f=0; f<k; f++)
{
messagebox (ch[f]);
}
function ffn(string #tx, int p, int #tc[0], int #tk)
{
string t;
char c[1000];
int sz;
tk=0;
for (int n=0; n<p; n++)
{
sz=size(tx[n]);
strcpy(#c[0], Text[n]);
t="";
for (int x=0; x<sz; x++)
{
if (c[x]==' ')
{
tc[tk]=formatsn(t);
tk++;
t="";
}
else t=t+c[x];
}
tc[tk]=formatsn(t);
tk++;
t="";
}
}
Или использовать спец функцию поиска как в выше после, если лень самому сделать как тут.
4. Zireael - 08 Сентября, 2018 - 11:25:27 - перейти к сообщению
Цитата:
Цифра распознал, записал их в переменную типа string (Text[4])
Записывать проще в строку, чем в массив в данном случае.
CODE:
// http://kibor-bot.com/forum/topic.php?forum=6&topic=65
// dll должна быть в папке с кибор
external(INT, "regex_iterator", "regex_iterator", pathfolder()+"\regex.dll" );
string Text="17 8 100 5 76 56 93 856123"; // строка с числами
char result[20][10];
int ch[20];
int x=regex_iterator(Text, "\d+", address(#result[0][0]), sizearray(result), sizearray(result[]));
messagebox("Найдено чисел: "+format(x));
if(x>0)
{
for(int i=0; i<x; i++)ch[i]=formatsn(format(#result[i][0])); // пишем числа в массив int
messagebox(ch[0]);
messagebox(ch[1]);
messagebox(ch[2]);
}
// dll должна быть в папке с кибор
external(INT, "regex_iterator", "regex_iterator", pathfolder()+"\regex.dll" );
string Text="17 8 100 5 76 56 93 856123"; // строка с числами
char result[20][10];
int ch[20];
int x=regex_iterator(Text, "\d+", address(#result[0][0]), sizearray(result), sizearray(result[]));
messagebox("Найдено чисел: "+format(x));
if(x>0)
{
for(int i=0; i<x; i++)ch[i]=formatsn(format(#result[i][0])); // пишем числа в массив int
messagebox(ch[0]);
messagebox(ch[1]);
messagebox(ch[2]);
}
5. KeSeG - 08 Сентября, 2018 - 11:41:13 - перейти к сообщению
Спасибо большое. Вроде бы получилось) Счастлив как слоняка)