Показать сообщение отдельно
  #15  
Старый 07.09.2012, 19:10
Аватар для @Rafa3L
@Rafa3L @Rafa3L вне форума
Начинающий
 
Регистрация: 09.11.2011
Адрес: Москва
Сообщения: 144
Версия Delphi: XE2
Репутация: 11216
По умолчанию

Код:
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 (хотя и так понятно, что это места и длины искомых строк).
(если планируется использовать в большой программе оформляем в виде процедуры/функции).

И никакого:
руби,джава, лайка в твиттере и публикации в ФБ, никаких дополнительных библиотек и модулей.
__________________
Помогаю платно.
Помогаю иногда бесплатно.
Ответить с цитированием