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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.08.2012, 06:23   #1
spored
Пользователь
 
Регистрация: 29.12.2010
Сообщений: 12
По умолчанию ICQclient и многопоточность

Всем привет.Никак не получается добиться вывести в онлайн сразу много номеров.Если в 1 поток то все нормально, если больше то не выходит.
Помогите пожалуйста
Вот код:

Цитата:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
IdTCPClient, IdHTTP, ICQClient;

type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Memo1: TMemo;
Memo2: TMemo;
Button2: TButton;
ICQClient1: TICQClient;
Edit2: TEdit;
procedure Button1Click(Sender: TObject);
procedure ICQClient1Login(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

type
TMyThread = class(TThread)
private
fID: Integer;
protected
procedure SetID(Value: Integer);
function GetID: Integer;
procedure Execute; override;
public
property ThreadID: Integer read GetID write SetID;
end;

var
Form1: TForm1;
MyThread: TMyThread;
ThreadNumber: integer;
var ICQ: array of TICQClient;
i:integer;
Uin, Password:string;
AccountList:Tstringlist;
Acc:integer;

implementation

{$R *.dfm}


procedure TMyThread.SetID(Value: Integer);
begin
fID:=Value;
end;


Function TMyThread.GetID: Integer;
begin
Result:=fID;
end;

procedure TMyThread.Execute;
begin
Inc(Acc);
UIN:=Copy(AccountList[Acc],1,Pos(';',AccountList[Acc])-1);
Password:=Copy(AccountList[Acc],Pos(';',AccountList[Acc])+1,Length(AccountList[Acc]));

Form1.Memo2.Lines.Add(UIN+';'+Passw ord);

SetLength(ICQ, ThreadID);
ICQ[i]:=TICQClient.Create(nil);
ICQ[i].UIN:=StrToInt(UIN);
ICQ[i].Password:=Password;
ICQ[i].Login();
ICQ[i].OnLogin:=Form1.ICQClient1Login;
ICQ[i].Tag:=i;
Sleep(StrToInt('2000'));
ICQ[i].LogOff;
ICQ[i].Free;
end;

procedure TForm1.Button1Click(Sender: TObject);
var ii:integer;
begin
ThreadNumber:=strtoint(Form1.Edit1. Text);
for ii := 1 to ThreadNumber do
begin
MyThread:=TMyThread.Create(False);
MyThread.Priority:=tpNormal;
MyThread.FreeOnTerminate:=True;
MyThread.ThreadID:=ii;
MyThread.Resume;
end;
end;

procedure TForm1.ICQClient1Login(Sender: TObject);
begin
Form1.Memo2.Lines.Add('Good');
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
AccountList:=Tstringlist.create;
AccountList.LoadFromFile('source.tx t');
Acc:=0;
end;

end.

Последний раз редактировалось spored; 14.08.2012 в 20:27.
spored вне форума Ответить с цитированием
Старый 14.08.2012, 08:25   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а причем тут ICQClient?
он помоему итак асинхронный.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 14.08.2012, 20:45   #3
spored
Пользователь
 
Регистрация: 29.12.2010
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
а причем тут ICQClient?
он помоему итак асинхронный.
не понял
spored вне форума Ответить с цитированием
Старый 14.08.2012, 20:51   #4
dosha
Форумчанин
 
Регистрация: 30.08.2010
Сообщений: 224
По умолчанию

юзайте товарищь бегин сиад иль как там его. а в каждом потоке свой экземпляр класса + отдельно переданный логин пасс.
dosha вне форума Ответить с цитированием
Старый 14.08.2012, 20:52   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

сначало код был другой.

ICQClient итак асинхронный(выносит действия в поток), не нужно его выносить в поток.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 14.08.2012, 22:05   #6
spored
Пользователь
 
Регистрация: 29.12.2010
Сообщений: 12
По умолчанию

А как тогда добиться многопоточности ?
spored вне форума Ответить с цитированием
Старый 14.08.2012, 22:29   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

вам нужна не многопоточность, а много соединений, киньте три компонента, будет три соединения(но помним про лимит с IP)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 15.08.2012, 04:15   #8
spored
Пользователь
 
Регистрация: 29.12.2010
Сообщений: 12
По умолчанию

Вот например мне нужно вывести 100+ номеров в онлайн.Мне теперь 100+ компонентов кидать ? Мне именно нужно вывести много номеров в онлайн одновременно
spored вне форума Ответить с цитированием
Старый 15.08.2012, 08:24   #9
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

ну создать динамически не проблема.

ток наверно вас сервер пошлет .
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 15.08.2012, 09:21   #10
spored
Пользователь
 
Регистрация: 29.12.2010
Сообщений: 12
По умолчанию

Не поможете с созданием ? Я пытался создать динамически но как то не так работает.
spored вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
IcqClient DKENT Работа с сетью в Delphi 1 24.08.2011 15:56
Работа ICQClient Volkogriz Общие вопросы Delphi 1 29.01.2011 12:29
ICQClient BoT_T Работа с сетью в Delphi 7 21.09.2010 15:53
ICQClient DeDoK Компоненты Delphi 7 05.07.2010 05:59
icqclient foxes Общие вопросы Delphi 13 18.06.2009 21:56