Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Интернет и сети
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 28.05.2012, 12:41
victor20010 victor20010 вне форума
Прохожий
 
Регистрация: 21.04.2012
Сообщения: 7
Репутация: 10
По умолчанию потоки :confused:

помогите пожалуйста
вот все потоки работают только есть проблеммы
1.например пишеш 1 поток он их делает 2
2.указываеш к примеру с 1 по 10 а он парсит до 50:shock:
3.зависает программа до окончания процесса
что делать?(
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IdBaseComponent,regexpr, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP,
  StdCtrls, sSkinManager, sLabel, IdAntiFreezeBase, IdAntiFreeze, Spin;

type

potok = class(TThread) 
  private
   str: string;
   nomer : Integer;
  protected
    procedure Execute; override;
  public

    procedure synchro;

    constructor Create(CreateSuspended: Boolean);

  end;

   private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  Str:string;
  i:integer;
  reg:tregexpr;
   a: array [1..10] of potok;
implementation
constructor potok.Create(CreateSuspended: Boolean);
begin
  inherited Create(CreateSuspended);
end;

procedure potok.Execute;
var
i:integer;
begin
for I := strtoint(form1.Edit1.text) to strtoint(form1.edit2.text)  do
begin
sleep(1000);
synchronize(synchro);
end;
end;


procedure potok.synchro
var
s:string;
begin
inc(i);
Str:=form1.idhttp1.Get('http://......../tipper/reporting/lboard.php?&lang=&session_id='+inttostr(i));
form1.label4.caption:='Страница '+Inttostr(i)+' из '+form1.edit2.text;
begin
reg:=TRegExpr.create;
begin
Reg.expression:='text-align:left;(.*?)</td><td class=';
if reg.exec(str) then
repeat
s:=Copy(reg.match[1],0,Length(reg.match[1]));
s:=s;
form1.memo1.lines.Add(s);
until not Reg.ExecNext;
end;
end;
end;

{$R *.dfm}



procedure TForm1.Button1Click(Sender: TObject);
begin
if savedialog1.Execute then
memo1.Lines.SaveToFile(savedialog1.FileName+'.txt');
end;

procedure TForm1.Button2Click(Sender: TObject);
var pot:integer;
begin
if edit2.Text<edit1.text then
begin
showmessage('Конечный индекс должен быть больше начального')
end
else
begin
memo1.clear;
for pot:=1  to spinedit1.Value do  
  a[pot]:=potok.Create(false); 

end;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
idhttp1.Free;
end;

procedure TForm1.Memo1Change(Sender: TObject);
begin
label3.Caption:='Ссылок получено '+inttostr(memo1.Lines.Count);
end;

{ Potok }


end.
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 03:00.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter