[Delphi] Парсинг строк!

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

  1. Jakeroid

    Jakeroid Member

    Joined:
    9 May 2009
    Messages:
    199
    Likes Received:
    12
    Reputations:
    1
    Мне нужно скачать страницу объемом как примерно главная страница баша. Пользуюсь idHTTP.
    Какой тип переменной использовать для сохранения такой страницы? В стринг не влезет наверно?

    Оттуда вытянуть больше половины текста. Распарсить его построчно. Там где будут <br> организовать перенос строки. И вывести все в Memo
    Чем пользоваться для этой цели?
     
  2. Blizzard

    Blizzard Member

    Joined:
    27 Jul 2010
    Messages:
    16
    Likes Received:
    16
    Reputations:
    0
    в string 2gb влезет. Но все же советую tstringlist
     
  3. Jakeroid

    Jakeroid Member

    Joined:
    9 May 2009
    Messages:
    199
    Likes Received:
    12
    Reputations:
    1
    2gb?
    Хм... Кажется достаточно))
     
  4. Jakeroid

    Jakeroid Member

    Joined:
    9 May 2009
    Messages:
    199
    Likes Received:
    12
    Reputations:
    1
    Тоесть процедура такая, получаю страницу.
    Достаю куски текста, обрабатываю их и добавляю в TSringList, а потом просто все пишу в Мемо.
    Пойдет?
     
  5. 1n0y

    1n0y Active Member

    Joined:
    9 May 2009
    Messages:
    276
    Likes Received:
    282
    Reputations:
    2
    прога-же нужна тебе, а не нам. откуда мы знаем, пойдёт или нет? :)
     
  6. Jakeroid

    Jakeroid Member

    Joined:
    9 May 2009
    Messages:
    199
    Likes Received:
    12
    Reputations:
    1
    Да, ты прав. Что-то мой мозг не варит седня совсем... Во все "почти жена" виновата...
    Ладно спс.
     
  7. HakaR

    HakaR Active Member

    Joined:
    23 Jul 2009
    Messages:
    301
    Likes Received:
    200
    Reputations:
    3
    Получаешь данные в StringList, обрабатываешь и пишешь в Memo.
     
  8. Безработный

    Joined:
    25 Jun 2010
    Messages:
    0
    Likes Received:
    1
    Reputations:
    0
    Code:
    var
    List: TStringList;
    begin
    List:=TStringList.Create;
    List.Text:=idhttp1.get('http://site.com');
    //ну и не забывай потом
    List.Free;
    
    end;
     
    1 person likes this.
  9. M_script

    M_script Members of Antichat

    Joined:
    4 Nov 2004
    Messages:
    2,581
    Likes Received:
    1,317
    Reputations:
    1,557
    Но ведь в TStringList текст будет занимать больше памяти, чем в AnsiString?
     
  10. Jakeroid

    Jakeroid Member

    Joined:
    9 May 2009
    Messages:
    199
    Likes Received:
    12
    Reputations:
    1
    Еще вопрос, при скачивании html страницы в ней есть разделительные знаки? Которые обозначают конец строки.
    В делфи это "#13#10", а в html? Я имею ввиду не <br>, а те которые в самом коде. Ведь когда открываешь сурс странице в браузере, там не одна строка.
     
  11. ЕгоАкк

    ЕгоАкк Banned

    Joined:
    21 Sep 2009
    Messages:
    84
    Likes Received:
    18
    Reputations:
    0
    И пишешь конечный автомат и теребишь им строки.
     
  12. wolmer

    wolmer Member

    Joined:
    12 May 2009
    Messages:
    438
    Likes Received:
    97
    Reputations:
    9
    Есть, только это не знаки, а коды знаков. (как в делфи: #13#10)
    Эти коды и есть: #13#10 (либо просто #13)
    Пример:
    Code:
    var
      s: string;
    begin
      s := memo1.text;
      if (s[1] = #13) then
       showmessage('Встретился код переноса строки: '+inttostr(ord(s[1]))); //если первый символ S равен \n -> то выводим массагу
    end;
     
  13. Jakeroid

    Jakeroid Member

    Joined:
    9 May 2009
    Messages:
    199
    Likes Received:
    12
    Reputations:
    1
    Еще вопрос, парсинг осуществляю в основном через TRegExpr для делфи.

    Но! У меня строка html, В ней элементы <div bla bla </div>. Пишу регулярку, она вытаскивает первый такой элемент, и он находится в rExp.Match[1], а вот остальные не парсятся, то есть rExp.Match[2] и тд пустые.
    При этом: проверяю тот же текст, с той же регуляркой на http://regexpr.ru/, там все парсится.
     
  14. Jakeroid

    Jakeroid Member

    Joined:
    9 May 2009
    Messages:
    199
    Likes Received:
    12
    Reputations:
    1
    Ага, нашел ответ на свой вопрос.