Utilisation de composant créée dynamiquement

taye78 Messages postés 106 Date d'inscription mardi 18 juin 2002 Statut Membre Dernière intervention 13 janvier 2007 - 21 oct. 2004 à 02:49
taye78 Messages postés 106 Date d'inscription mardi 18 juin 2002 Statut Membre Dernière intervention 13 janvier 2007 - 22 oct. 2004 à 14:40
Bonjour,
voici le code que j'ai écris pour créer 2 ClientSocket dynamiquement, ensuite je leur attribu quelques propriétés etc. Mais lorsque l'evenement OnConnect de ces 2 composants est enclenché (en meme temps d'ailleurs vu que la connexion est faite en meme temps) seulement le dernier a l'avoir apellé répond !

Donc les commandes SendText sont envoyés uniquement au dernier composant a l'avoir enclenché ! Ici CSockIRC[2]
Je ne sais pas si je m'exprime correctement mais
voici le code:

----------

unit UMain;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Brkapart, ScktComp;

const CrLf = #13#10;

type
TForm1 = class(TForm)
SockIRC: TClientSocket;
BrkApart1: TBrkApart;
procedure FormCreate(Sender: TObject);
procedure SockIRCConnect(Sender: TObject; Socket: TCustomWinSocket);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

uses StrUtils;

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
CSockIRC: array[1..2] of TClientSocket;
i: integer;
begin
for i := 1 to 2 do
begin
CSockIRC[i] := TClientSocket.Create(Self);
With CSockIRC[i] do
begin
Name := 'bnc' + IntToStr(i);
Host := '80.247.212.252';
Port := 1666;
OnConnect := SockIRC.OnConnect;
Open;
end;
end;
end;

procedure TForm1.SockIRCConnect(Sender: TObject; Socket: TCustomWinSocket);
begin
With TClientSocket(Sender).Socket do
begin
SendText('USER ' + TClientSocket(Sender).Name + ' x :salut ca va' + CrLf);
SendText('NICK Xtr' + RightStr(TClientSocket(Sender).Name, 2) + 'm' + CrLf);
SendText('PASS motdepasse' + CrLf);
end;
end;

end.

--------------

Merci d'avance !

-wG-

4 réponses

cs_leveugle Messages postés 27 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 18 novembre 2004
21 oct. 2004 à 19:54
Salut,

ce ne serait pas à cause du fait que tu utilises le même port pour les 2 sockets ??

A+
Damien
0
taye78 Messages postés 106 Date d'inscription mardi 18 juin 2002 Statut Membre Dernière intervention 13 janvier 2007
22 oct. 2004 à 00:54
Non, ce n'est malheuresement pas ca. Merci quand meme!

On dirait que la var. qui contient l'adresse memoire du premier objet est perdu et qu'elle redirige vers l'adresse du dernier obj. crée :-/ [:-(]

-wG-
0
cs_leveugle Messages postés 27 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 18 novembre 2004
22 oct. 2004 à 07:26
Re,

dis pourquoi ton tablau de TClientSocket est local à ta procedure FormaCreate... cela me parait bizarre.
Tu devrais surement déclarer ce tableau comme membre de ta fenêtre...

A+
Damien
0
taye78 Messages postés 106 Date d'inscription mardi 18 juin 2002 Statut Membre Dernière intervention 13 janvier 2007
22 oct. 2004 à 14:40
Salut,
oui effectivement, j'ai mis cette variable en tant que global mais le resultat est le meme.

-wG-
0
Rejoignez-nous