|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Запуск нескольких потоков
Народ, сорри, но уже мозг кипит. есть кнопка на форме для запуска потоков.
Код:
var Form1: TForm1; Pay: array [1..2000] of BUX; http_1: array [1..2000] of TIdHTTP; IdCookieManager1_Pay: array [1..2000] of TIdCookieManager; procedure TForm2.Bux_Button2Click(Sender: TObject); var w:integer; s:integer; cw : integer; // счетчик цикло begin for w:=1 to Form2.Listview1.Items.count do begin Pay[w]:=1.Create(True); Pay[w].FreeOnTerminate := True; Pay[w].Priority:=tpnormal; Pay[w].Resume; end; end; есть поток Код:
unit T1; interface uses Windows, SysUtils, Dialogs, Classes, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP, RpDefine, RpRender, RpRenderHTML, IdCookieManager, IdIOHandler, IdIOHandlerSocket, IdIOHandlerStack, IdSSL, IdSSLOpenSSL, StrUtils, pngimage; type 1 = class(TThread) http_1:TIdHTTP; IdCookieManager1_Pay: TIdCookieManager; RvRenderHTML2: TRvRenderHTML; IdSSLIOHandlerSocketOpenSSL1: TIdSSLIOHandlerSocketOpenSSL; private { Private declarations } protected procedure Execute; override; public end; implementation uses Unit1 procedure 1.Execute; var cw : integer; // счетчик цикло i : integer; // счетчик цикло a : integer; // счетчик цикло BPos : integer; // счетчик цикло EPos : integer; // счетчик цикло st:TStringStream; str:AnsiString; s:TStringStream; URL_Pay:String; Login:String; Pass:String; inf:TStringList; img: TMemoryStream; png: TPNGObject; begin for i:=0 to Form2.Listview1.Items.count-1 do begin URL_Pay :=Form2.Listview1.Items[i].SubItems[0];//сайты Login := Form2.Listview1.Items[i].SubItems[1];//логины Pass := Form2.Listview1.Items[i].SubItems[2];//пароли begin IdCookieManager1_Pay:= TIdCookieManager.Create(nil); http_1 := TidHTTP.Create(nil); http_1.AllowCookies:=true; http_1.HandleRedirects:= true; cw:=getnumber; s:=TStringStream.Create; st:=TStringStream.Create; inf:=tstringlist.create; begin http_1.get('http://' + URL_Pay + 'login.php?r=',s); end; If pos('image.php?', s.datastring)>0 then begin /// end else /// end; try except end; end; finally http_1.free; end; end; end; ; Код:
cw : integer; ind:integer=-1; function getnumber:integer; begin if ind<>form1.Listview1.items.Count then inc(ind); result:=ind; end; begin while cw<form2.Listview1.items.Count do begin Что мне нада сделать для того что бы для каждой записи создавался поток и работал только с нею Последний раз редактировалось bulldog, 11.11.2010 в 10:07. |
#2
|
|||
|
|||
Народ, ну помогите в решении тупиковой задачи
|
#3
|
||||
|
||||
Код:
type TBot = class(TThread) private FUrl_Pay, FLogin, FPassword: String; http_1:TIdHTTP; IdCookieManager1_Pay: TIdCookieManager; RvRenderHTML2: TRvRenderHTML; IdSSLIOHandlerSocketOpenSSL1: TIdSSLIOHandlerSocketOpenSSL; protected procedure Execute; override; public constructor Create(CreateSuspended: Boolean; aUrl, aLog, aPas: String); destructor Destroy; override; end; implementation uses Unit1; constructor TBot.Create(CreateSuspended: Boolean; aUrl, aLog, aPass: String); begin inherited Create(CreateSuspended); FreeOnTerminate:= True; Priority:= tpLower; FUrl_Pay:= aUrl; FLogin:= aLog; FPassword:= aPass; http_1:= TIdHTTP.Create(Nil); IdCookieManager1_Pay:= TIdCookieManager.Create(Nil); RvRenderHTML2:= TRvRenderHTML.Create(Nil); IdSSLIOHandlerSocketOpenSSL1:= TIdSSLIOHandlerSocketOpenSSL.Create(Nil); http_1.AllowCookies:= True; http_1.HandleRedirects:= True; http_1.CookieManager:= IdCookieManager1_Pay; end; destructor TBot.Destroy; begin http_1.Free; IdCookieManager1_Pay.Free; RvRenderHTML2.Free; IdSSLIOHandlerSocketOpenSSL1.Free; inherited Destroy; end; procedure TBot.Execute; begin try http_1.get('http://' + FUrl_Pay + 'login.php?r=',s); except Exit; end; end; Код:
type TForm1 = class(TForm) Button1: TButton; private BotArray: array of TBot; { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var I: Integer; begin SetLength(BotArray, Listview1.Items.count); for I:= 0 to Listview1.Items.count-1 do begin BotArray[i]:= TBot.Create(True); BotArray[i].Resume; end; end; |
#4
|
|||
|
|||
Выводит в ошибку [DCC Error] Unit1.pas(52): E2008 Incompatible types
SetLength(<<BotArray>>, Listview1.Items.count); //ошибку я пометил так <<>> |