Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   цикл делфи (https://forum.antichat.xyz/showthread.php?t=200440)

aydar 29.04.2010 19:08

цикл делфи
 
Кароче такой вопрос получаю сорсы страницы в стринг, в ней есть несколько искомых строк одну эту строку я могу найти, но вот немогу найти эти строки до конца переменной как сделать?

1n0y 29.04.2010 19:43

var
sl:tstringlist;
i:integer;
begin
sl:=tstringlist.create;
sl.text:=http.get('site.ru');
for i:=0 to sl.count-1 do
begin
//поиск строки, вывод куда надо
end;
end;

aydar 29.04.2010 19:55

а у меня просто string

stepashka_ 29.04.2010 19:56

Выложи код.

aydar 29.04.2010 20:16

Вот код, 1n0y должен помочь, он что-то типо этого делал

Цитата:

procedure TForm1.Button1Click(Sender: TObject);
var
s,s1,i:integer;
cod:string;
params, responseres : tstringlist;
begin
params := TStringList.Create;
responseres := TStringList.Create;
try
params.Add('Login=wolf12309');
params.Add('Domain=mail.ru');
params.Add('Password=1234567');
responseres.Text := IdHTTP1.Post('http://win.mail.ru/cgi-bin/auth',params);
if Pos('logout',responseres.Text)>0 then
responseres.Text :=IdHTTP1.Post('http://my.mail.ru/my/search?search=1&typeSimple=1&type=1&query=&firstna me=&country=24&lastname=&city=25',params);
if Pos('message&to=',responseres.Text)<>0 then
ShowMessage('Поиск начат!');
for i:= 0 to 2 do //тут нихрена не получаеться
begin
s:=pos ('message&to=',responseres.Text);
s1:=pos ('ru" title',responseres.Text);
memo2.text:=copy(responseres.Text,s+11,s1-s-9);
end;
finally
params.free;
responseres.free;
end;
end;

JnK 29.04.2010 20:26

Цитата:

Сообщение от aydar
Вот код, 1n0y должен помочь, он что-то типо этого делал

1. Как один из вариантов копировать стринг.
1. 1. нашел, что надо, запомнил
1. 2. Удалил, от конца позиции - все начало. Delete
2. В инете много функций POS которые Работаютт с указанием позиции, тоесть нашел, запомнил позицию +1 дальше ищем...

1n0y 29.04.2010 21:57

как я понял, тебе нужно парсить мыла?

я делал так:

Код:

var
i:integer;
ml:string;
resp:tstringlist;

// захожу на акк
        resp:=tstringlist.create;
        resp.Text:=form1.http1.get('ссылка на поиск');
            for i:=0 to resp.Count-1 do
            begin
              if Pos('www.mail.ru/agent?message&to=',resp.Strings[i])>0 then // если в строке есть эта строчка, то парсим мыла
              begin
                ml:=copy(resp.Strings[i], pos('www.mail.ru/agent?message&to=',resp.Strings[i]),99);
                delete(ml, 1, 29);
                delete(ml, pos('"',ml) ,length(ml));
                form1.memo1.lines.add(ml); // добавляем мыло в мемо.
              end
              end;


JnK 29.04.2010 22:50

PHP код:

                ml:=copy(resp.Strings[i], pos('www.mail.ru/agent?message&to=',resp.Strings[i])+29,99);
                
delete(mlpos('"',ml) ,length(ml)); 

Думаю так быстрее будет чуточку :)

В идеале вообще бы так:
PHP код:

                ml:=copy(resp.Strings[i], pos('www.mail.ru/agent?message&to=',resp.Strings[i])+29,pos('"',resp.Strings[i]); 


1n0y 30.04.2010 03:01

JnK, ага, так действительно лучше :)

aydar 30.04.2010 20:08

ребят проблема с функции delete, кароче делаю так

Цитата:

responseres := TStringList.Create;

delete (responseres.text,0,pos('" title="Ще',responseres.text)+11);
компилятор выдают ошибку [DCC Error] Unit1.pas(51): E2197 Constant object cannot be passed as var parameter

кароче удаляю с начала , вклюяительно позиции title="Ще, но компилятор не пропускает что я не правильно делаю


Время: 17:12