Код:
procedure TForm1.Button6Click(Sender: TObject);
var
i,n:integer;
s:string;
t1,t2,t3:string;
begin
s:=memo1.Text; //не обязательно с мемо, можно откуда угодно, где есть свойство текст.
n:=length(s)-145; //длина текста
for i:=1 to n do
if s[i]='У' then //ищем номер позиции буквы "У", от него и будем "плясать"
begin
if s[i+1]='ч' then
if copy(s,i+2,8)='астников' then
begin
if s[i+18]='и' then //21-я после буквы "У", и между "0 из 32"
begin
t1:=s[i+16]; // 0 16-я после буквы "У"
t2:=copy(s,i+21,2); //32 21-я после буквы "У",длина 2
t3:=copy(s,i+106,36); //ccылка 106-я после буквы "У",длина 36
memo1.Lines.add(t1); //тут результат. просто показал в мемо, а можно где угодно использовать переменные т1 т2 т3
memo1.Lines.add(t2);
memo1.Lines.add(t3);
end
else
begin //этот код на случай если "11 из 32" или "25 из 32" ( если таких случаем нету, выбрасываем проверку на "и"
t1:=copy(s,i+16,2);
t2:=copy(s,i+22,2);
t3:=copy(s,i+107,36);
memo1.Lines.add(t1);
memo1.Lines.add(t2);
memo1.Lines.add(t3);
end;
end;
end;
end;
И того:
получим один быстрый цикл
for i:=1 to n do
if s[i]='У' then
который позволит быстро выделить нужные области.
вероятность что текст игры(я почему то подумал что тут футбольный эмулятор, а оказывается покер-сайт) будет переполнен словами скажем "Ученик", очень мала.
Операторы внутри цикла после if в 99% будут выпоняться в нужных местах.
дополнительная проверка
if copy(s,i+2,8)='астников' then
и вытаскиваем данные:
t1:=copy(s,i+16,2);
t2:=copy(s,i+22,2);
t3:=copy(s,i+107,36);
И того: мы получаем быструю, понятню даже тем, кто только начинает программировать и выучил:
length
for
if
copy
memo.lines.add(
т.е. и ежу понятный код.
Для полного счастья поясняем в комментариях значения постоянных 16,22,107,2,36 (хотя и так понятно, что это места и длины искомых строк).
(если планируется использовать в большой программе оформляем в виде процедуры/функции).
И никакого:
руби,джава, лайка в твиттере и публикации в ФБ, никаких дополнительных библиотек и модулей.