Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.05.2014, 14:13   #1
FleXik
Форумчанин
 
Регистрация: 01.11.2012
Сообщений: 770
По умолчанию Регулярка RegExpr, ошибка: "No Input String Specified"

Код:
  i:=0;
  RegExp:=TRegExpr.Create;
  RegExp.Expression:='<div>(.*?)</div>';

    while (RegExp.Exec) do // тут получаю ошибку "No Input String Specified"
    begin
      IdHTTP1.Get('http://сайт.ru/parmatr='+IntToStr(i));

        if RegExp.Exec(IdHTTP1...блаблабла) then
        repeat
          Form1.sRichEdit1.Lines.Add(RegExp.Match[1]);
        until not RegExp.ExecNext;

      i:=i+10;
    end;
Вобщем задача следующая:
Отправляем запрос -> парсим 10 значений -> спарсили -> увеличиваем переменную i на 10 и так по кругу до тех пор пока не кончатся данные для парсинга на сайте...
FleXik вне форума Ответить с цитированием
Старый 22.05.2014, 14:25   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ну так он же не знает, какую Вы строку собрались парсить!

Цитата:
function Exec (const AInputString : string) : boolean;

Выполнить выражение применительно к входной строке AInputString

!!! также, запоминает AInputString в ствойстве InputString

For Delphi 5 and higher available overloaded versions:

function Exec : boolean;
without parameter (uses already assigned to InputString property value)
из доки на TRegExpr ...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 22.05.2014, 16:24   #3
FleXik
Форумчанин
 
Регистрация: 01.11.2012
Сообщений: 770
По умолчанию

Serge_Bliznykov, меня интересует конкретный ответ, я и так весь код дал...
FleXik вне форума Ответить с цитированием
Старый 22.05.2014, 16:38   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

странно.
я думал, что ответ очевиден

while (RegExp.Exec) do - выполнять, пока поиск регулярного выражения в исходной строке выполнился успешно (ну, что-то нашлось..)

выражение для поиска вы задали:
RegExp.Expression:='<div>(.*?)</div>';

а где оно будет искать, в какой строке? Строки то НЕТ!!
вот компонент и ругается.


p.s. это что касается ошибки.
Что же касается того, как её исправить - то тут я Вам не помогу, я ваш код поиска не понимаю, извините...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.05.2014, 19:55   #5
FleXik
Форумчанин
 
Регистрация: 01.11.2012
Сообщений: 770
По умолчанию

народ нужна помощь, что-то совсем никак... проблему описал максимально подробно + приложил код...


P.S это весь код и я понимаю что выбивает ошибку из-за того что негде искать, но, мне нужны советы как это можно реализовать по-другому...

Последний раз редактировалось FleXik; 25.05.2014 в 20:04.
FleXik вне форума Ответить с цитированием
Старый 25.05.2014, 20:18   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

так, что ли?

Код:
i:=0;
  RegExp:=TRegExpr.Create;
  RegExp.Expression:='<div>(.*?)</div>';

    while (True) do 
    begin
        IdHTTP1.Get('http://сайт.ru/parmatr='+IntToStr(i));

        if RegExp.Exec(IdHTTP1...блаблабла) then
          repeat
            Form1.sRichEdit1.Lines.Add(RegExp.Match[1]);
          until not RegExp.ExecNext
        else 
            Break;

      i:=i+10;
    end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.05.2014, 20:40   #7
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

Цитата:
мне нужны советы как это можно реализовать по-другому
совет 1: прочитать справку по используемым средствам
если не помогло совет 2: нанять программиста
eval вне форума Ответить с цитированием
Старый 25.05.2014, 21:26   #8
FleXik
Форумчанин
 
Регистрация: 01.11.2012
Сообщений: 770
По умолчанию

Serge_Bliznykov, даааа))) идеально вообще, спс большое
FleXik вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Постоянно слетает галочка "автоматически" в "Параметры Excel", "Формулы", "Вычисления в книге" Alexsandrr Microsoft Office Excel 4 19.10.2013 14:22
Неявное преобразование типа "string" в "int" невозможно artscorp C# (си шарп) 4 10.02.2013 20:59
Как передать значениет с <input type="text"> в тег <a href="serch.php?serch=(сюда)"> SevenXP PHP 3 22.04.2012 03:14
Как обойти "преобразование типа из "string" в "float" невозможно" lexluter1988 Помощь студентам 1 07.08.2010 12:23
Ошибка при использовании OlePropertyGet("Documents").OleProcedure("Add") в C++ Builder AleksP C++ Builder 7 11.04.2009 13:06