цикл делфи

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by aydar, 29 Apr 2010.

  1. aydar

    aydar Member

    Joined:
    12 Nov 2009
    Messages:
    259
    Likes Received:
    6
    Reputations:
    -2
    Кароче такой вопрос получаю сорсы страницы в стринг, в ней есть несколько искомых строк одну эту строку я могу найти, но вот немогу найти эти строки до конца переменной как сделать?
     
  2. 1n0y

    1n0y Active Member

    Joined:
    9 May 2009
    Messages:
    272
    Likes Received:
    276
    Reputations:
    2
    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;
     
  3. aydar

    aydar Member

    Joined:
    12 Nov 2009
    Messages:
    259
    Likes Received:
    6
    Reputations:
    -2
    а у меня просто string
     
  4. stepashka_

    stepashka_ Мотоциклист

    Joined:
    9 Nov 2009
    Messages:
    1,018
    Likes Received:
    418
    Reputations:
    232
    Выложи код.
     
  5. aydar

    aydar Member

    Joined:
    12 Nov 2009
    Messages:
    259
    Likes Received:
    6
    Reputations:
    -2
    Вот код, 1n0y должен помочь, он что-то типо этого делал

     
    #5 aydar, 29 Apr 2010
    Last edited: 29 Apr 2010
  6. JnK

    JnK Elder - Старейшина

    Joined:
    30 Mar 2007
    Messages:
    125
    Likes Received:
    21
    Reputations:
    0
    1. Как один из вариантов копировать стринг.
    1. 1. нашел, что надо, запомнил
    1. 2. Удалил, от конца позиции - все начало. Delete
    2. В инете много функций POS которые Работаютт с указанием позиции, тоесть нашел, запомнил позицию +1 дальше ищем...
     
    #6 JnK, 29 Apr 2010
    Last edited: 29 Apr 2010
  7. 1n0y

    1n0y Active Member

    Joined:
    9 May 2009
    Messages:
    272
    Likes Received:
    276
    Reputations:
    2
    как я понял, тебе нужно парсить мыла?

    я делал так:

    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;
     
    #7 1n0y, 29 Apr 2010
    Last edited: 29 Apr 2010
  8. JnK

    JnK Elder - Старейшина

    Joined:
    30 Mar 2007
    Messages:
    125
    Likes Received:
    21
    Reputations:
    0
    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]);
     
  9. 1n0y

    1n0y Active Member

    Joined:
    9 May 2009
    Messages:
    272
    Likes Received:
    276
    Reputations:
    2
    JnK, ага, так действительно лучше :)
     
  10. aydar

    aydar Member

    Joined:
    12 Nov 2009
    Messages:
    259
    Likes Received:
    6
    Reputations:
    -2
    ребят проблема с функции delete, кароче делаю так

    компилятор выдают ошибку [DCC Error] Unit1.pas(51): E2197 Constant object cannot be passed as var parameter

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

    aydar Member

    Joined:
    12 Nov 2009
    Messages:
    259
    Likes Received:
    6
    Reputations:
    -2
    кто поможет?
     
  12. JnK

    JnK Elder - Старейшина

    Joined:
    30 Mar 2007
    Messages:
    125
    Likes Received:
    21
    Reputations:
    0
    Delete функция работает только с VAR (чтение/Запись)
    Тоесть тебе надо присвоить значение какому нить стринку и резать как душе угодно.
    PHP:
    var
      
    str:string;
    begin
      responseres 
    := TStringList.Create;
      
    Str:=responseres.text;
      
    delete (str,0,pos('" title="Ще',responseres.text)+11);
      
    responseres.Free;
    end;