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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.06.2012, 22:36   #1
record222
Форумчанин
 
Регистрация: 23.09.2009
Сообщений: 127
По умолчанию Настройка потока

Доброе время суток, дорогие жители форума.

Помогите пожалуйста настроить поток, а то я не очень понимаю...

В form2.memo1, у меня есть несколько запросов(то что нужно найти в ПС).
Если же нужного текста в коде не найдено, то программа переходит на вторую страницу и начинает опять искать, и так пока не найдет требуемый текст... Если же текст найден, то переходить ко второй строчке form2.memo1 и искать далле....

Я пробовал и c while и без, но все равно не понимаю как это реализовать. Спасибо!!

Собственно:
Код:
procedure pars_rus.Execute;
var
work:boolean;
http:tidhttp;
s, ei:string;
begin
cw:=getkey;
   while cw<form2.Memo1.Lines.Count-1 do
   begin

         http:=tidhttp.create(nil);
  with http do
    begin
      allowcookies:=true;
      handleredirects:=True;
      Request.UserAgent:=useragent[Random(useragent.Count)];
      Request.Connection:='keep-alive';
    end;

 s:=http.Get('пс.ку/search?q='+URLEncode(AnsitoUTF8(form2.Memo1.Lines[cw])));
      if POS('требуемый текст', s)<>0 then
        begin
        ei:=Pars('1&sei=', s, '"');
        delete(s, 0, pos('receptiki', s));
        form1.Memo1.Lines.Add(s);
        work:=false;
         end
          else
          begin
           work:=true;
          while work do
          begin
          delete(s, 1, pos('</span>10', s));
          s:=http.get('пс.ру'+Pars('"/search?q=', s, '"'));
          if pos('Требуемый текст', s)<>0 then  
begin

end;
          end;
        end;

    end;
end;
record222 вне форума Ответить с цитированием
Старый 27.06.2012, 23:57   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
http:=tidhttp.create(nil);
Вынеси за пределы цикла - систему мусоришь.
Я бы на твоем месте этот суп разгреб так:
Код:

procedure pars_rus.IsNeeded;
begin
 Тут тот код, если найденна подстрока
end;

procedure pars_rus.NextPlease;
var i:integer;s2:String;
begin
  i:=pos('</span>10', s);
 while i>0 do begin
  delete(s, 1, i); s2:=s;
  s:=http.get('пс.ру'+Pars('"/search?q=', s, '"'));
  if POS('требуемый текст', s)<>0 then begin 
    Synchronize(IsNeeded);
    exit;
  end;
  s:=s2;
  i:=pos('</span>10', s);
 end;
end;


procedure pars_rus.Execute;
var
 i:integer;
begin

  http:=tidhttp.create(nil);
  with http do
    begin
      allowcookies:=true;
      handleredirects:=True;
      Request.UserAgent:=useragent[Random(useragent.Count)];
      Request.Connection:='keep-alive';
    end;
  
 for i:=0 to form2.Memo1.Lines.Count-1 do begin
  s:=http.Get('пс.ку/search?q='+URLEncode(AnsitoUTF8(form2.Memo1.Lines[i])));
  if POS('требуемый текст', s)<>0 then Synchronize(IsNeeded) else NextPlease;
 end;
work:boolean;
http:tidhttp;
s, ei:string;
Сделал бы полями класса потока.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.06.2012, 11:26   #3
record222
Форумчанин
 
Регистрация: 23.09.2009
Сообщений: 127
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Вынеси за пределы цикла - систему мусоришь.
Я бы на твоем месте этот суп разгреб так:
Спасибо! Все работает! +++
record222 вне форума Ответить с цитированием
Старый 28.06.2012, 12:56   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Пользуйся на здоровье, земеля )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Должно быть 3 потока. А диспетчер задач показывает, что потока создано 2 BEL9ILLI Общие вопросы Delphi 3 06.12.2011 20:26
Перехват потока nordos Общие вопросы C/C++ 0 02.11.2011 17:43
Как узнать номер потока из самого потока? GaMeSTeR Помощь студентам 0 03.12.2010 09:50
Обращение к БД из потока xStill БД в Delphi 8 27.07.2010 18:28
Номер потока KoBRaAndrey Общие вопросы Delphi 1 01.06.2010 02:27