Кароче такой вопрос получаю сорсы страницы в стринг, в ней есть несколько искомых строк одну эту строку я могу найти, но вот немогу найти эти строки до конца переменной как сделать?
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;
1. Как один из вариантов копировать стринг. 1. 1. нашел, что надо, запомнил 1. 2. Удалил, от конца позиции - все начало. Delete 2. В инете много функций POS которые Работаютт с указанием позиции, тоесть нашел, запомнил позицию +1 дальше ищем...
как я понял, тебе нужно парсить мыла? я делал так: Code: 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;
PHP: ml:=copy(resp.Strings[i], pos('www.mail.ru/agent?message&to=',resp.Strings[i])+29,99); delete(ml, pos('"',ml) ,length(ml)); Думаю так быстрее будет чуточку В идеале вообще бы так: PHP: ml:=copy(resp.Strings[i], pos('www.mail.ru/agent?message&to=',resp.Strings[i])+29,pos('"',resp.Strings[i]);
ребят проблема с функции delete, кароче делаю так компилятор выдают ошибку [DCC Error] Unit1.pas(51): E2197 Constant object cannot be passed as var parameter кароче удаляю с начала , вклюяительно позиции title="Ще, но компилятор не пропускает что я не правильно делаю
Delete функция работает только с VAR (чтение/Запись) Тоесть тебе надо присвоить значение какому нить стринку и резать как душе угодно. PHP: var str:string; begin responseres := TStringList.Create; Str:=responseres.text; delete (str,0,pos('" title="Ще',responseres.text)+11); responseres.Free; end;