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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 11.11.2010, 10:04
bulldog bulldog вне форума
Начинающий
 
Регистрация: 10.05.2010
Сообщения: 160
Репутация: 14
По умолчанию Запуск нескольких потоков

Народ, сорри, но уже мозг кипит. есть кнопка на форме для запуска потоков.
Код:
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  
Старый 11.11.2010, 15:22
bulldog bulldog вне форума
Начинающий
 
Регистрация: 10.05.2010
Сообщения: 160
Репутация: 14
По умолчанию

Народ, ну помогите в решении тупиковой задачи
Ответить с цитированием
  #3  
Старый 11.11.2010, 16:53
Аватар для pesi
pesi pesi вне форума
Активный
 
Регистрация: 12.09.2008
Сообщения: 275
Репутация: 43
По умолчанию

Код:
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  
Старый 11.11.2010, 18:23
bulldog bulldog вне форума
Начинающий
 
Регистрация: 10.05.2010
Сообщения: 160
Репутация: 14
По умолчанию

Выводит в ошибку [DCC Error] Unit1.pas(52): E2008 Incompatible types
SetLength(<<BotArray>>, Listview1.Items.count);
//ошибку я пометил так <<>>
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter