Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Dinamicko kreiranje komponenti i dodeljivanje Event handlera

[es] :: Pascal / Delphi / Kylix :: Dinamicko kreiranje komponenti i dodeljivanje Event handlera

[ Pregleda: 2932 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

anon68680

Član broj: 68680
Poruke: 528
79.101.79.*



+14 Profil

icon Dinamicko kreiranje komponenti i dodeljivanje Event handlera02.09.2008. u 19:09 - pre 190 meseci
problem je u TConnection.ClientOnRaw... nista sto se nalazi unutar ove procedure se ne odvija?

Evo koda:

Code:

program Project1;

uses
 IdBaseComponent, IdComponent, IdTCPConnection,
  IdTCPClient, IdIRC,dialogs,sysutils;

  type
   TConnection = class(TObject)
   Client: TIdIRC;
   procedure ClientOnRaw(Sender: TObject; AUser: TIdIRCUser; ACommand,
  AContent: String; var Suppress: Boolean);
   private
   public
   constructor Create;
   destructor Destroy; override;
  end;

 var
 con: TConnection;
 f:integer;

procedure TConnection.ClientOnRaw(Sender: TObject; AUser: TIdIRCUser; ACommand,
  AContent: String; var Suppress: Boolean);
begin
ShowMessage('aaaa');
end;

constructor TConnection.Create;
begin
   Client:=TIdIRC.Create(nil);
   Client.Port:=6667;
   client.host:='irc.kravakazemoo.com';
   Randomize;
   Client.Nick:='krava';
   Client.Password:='muuuu';
   Client.OnRaw:=Self.ClientOnRaw;
   Client.Username:='mesokombinat';
   Client.RealName:= 'Belka';
end;

destructor TConnection.Destroy;
begin
  inherited;
  Client.FRee;
end;

begin
  con:=TConnection.Create; 
  con.Client.Connect;
  f:=0;
  repeat
  sleep(0);
  until
  f=1;
end.



 
Odgovor na temu

obucina

Član broj: 38191
Poruke: 723

Jabber: obucina


+7 Profil

icon Re: Dinamicko kreiranje komponenti i dodeljivanje Event handlera02.09.2008. u 22:00 - pre 190 meseci
Asinhroni I/O za Windows sokete, koje Indy verovatno koristi, radi pomocu Windows poruka, tj zahteva red poruka (Message Queue), tj zahteva glavni prozor u programu. Moras imati glavni prozor aplikacije. U slucaju da u asinhronom modu koristi Event objekte ili koristi sinhrone sokete, tj da ne zahteva glavni prozor, ClientOnRaw ne moze da se izvrsi, jer ti se program vrti u beskonacnoj petlji. Ovakva postavka programa je potpuno pogresna.

[Ovu poruku je menjao obucina dana 02.09.2008. u 23:11 GMT+1]
 
Odgovor na temu

anon68680

Član broj: 68680
Poruke: 528
79.101.79.*



+14 Profil

icon Re: Dinamicko kreiranje komponenti i dodeljivanje Event handlera02.09.2008. u 22:09 - pre 190 meseci
Interesantno je to sto kad se unutar procedure npr nalazi nesto tipa:

cmd:=acontent; gde je cmd neka globalna string varijabla, ono se toj varijabli i dodeli odgovarajuca vrednost a ja je mogu ocitati kroz onu glavnu petlju u nekom slucaju. Kako da resim ovo a da ne moram da imam prozor u aplikaciji? Poenta je u tome da izbegavam Forms unit jer pokusavam da napravim sto manju aplikaciju.
 
Odgovor na temu

obucina

Član broj: 38191
Poruke: 723

Jabber: obucina


+7 Profil

icon Re: Dinamicko kreiranje komponenti i dodeljivanje Event handlera02.09.2008. u 22:15 - pre 190 meseci
Citat:
krza:Kako da resim ovo a da ne moram da imam prozor u aplikaciji?

Nemoj koristiti Indy komponente i uradi sve u Windows API-ju ili probaj da nadjes neku drugu socket komponentu.
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Dinamicko kreiranje komponenti i dodeljivanje Event handlera03.09.2008. u 01:32 - pre 190 meseci
> Asinhroni I/O za Windows sokete, koje Indy verovatno koristi, radi pomocu Windows poruka, tj zahteva red poruka (Message Queue), tj
> Nemoj koristiti Indy komponente i uradi sve u Windows API-ju ili probaj da nadjes neku drugu socket komponentu.

Indy komponente su baš poznate po tome što su blokirajuće tj. sinhrone, u asinhrone spada npr ICS.
Inače moja preporuka je da koristi Indy, a što se tiče problema ne okidanja event handlera, prosto greši negde, a gde barem ja ne mogu reći na osnovu dostupnih informacija, moj savet je da proveri da li taj event uopšte treba da se poziva i da je najbolje krenuti od zvaničnog demo primera.
 
Odgovor na temu

nikomak
Nikola Makić
Beograd

Član broj: 177053
Poruke: 65
*.rcub.bg.ac.yu.



+1 Profil

icon Re: Dinamicko kreiranje komponenti i dodeljivanje Event handlera03.09.2008. u 06:52 - pre 190 meseci
Pozdrav,

Koja je ovo verzija Indy-a ? Indy 9 mozda, posto je kod mene deklaracija onraw evt totalna drugacija na Indy 10 komponenti.
Sto se tice procesiranja poruka (ako je ono uopste potrebno :), moze se koristiti "nevidljivi" TPUtilWindow

Code:

...
FHandle: THandle;
procedure WndProc(var Msg: TMessage); 
...
//negde u constructor-u
FHandle := AllocateHwnd(WndProc);
...
procedure WndProc(var Msg: TMessage); 
begin
 //ovde handle-ovanje msg od interesa i defwndproc za sve ostale
 DefWindowProc(FHandle,Msg.Msg,Msg.WParam,Msg.LParam)
end;
...
//kasnije u destruktoru, ili gde vec
DeAllocateHWnd(FHandle);


Edit:
Jos jedno pitanje, je li ovo konzolna aplikacija ?

[Ovu poruku je menjao nikomak dana 03.09.2008. u 08:03 GMT+1]
TurboDispatchJumpAddressEnd
----
Knocka Fia
----
And so we meet, again in a different time
 
Odgovor na temu

0rc
BG

Član broj: 151321
Poruke: 107
*.adsl-1.sezampro.yu.



+40 Profil

icon Re: Dinamicko kreiranje komponenti i dodeljivanje Event handlera04.09.2008. u 22:13 - pre 190 meseci
U verziji koju ja trenutno koristim, TIdIRC startuje TIdIRCReadThread koji, koliko mogu da vidim na brzinu, prima podatke sa socketa i preko Synchronize() poziva obavestava deo komponente koji se izvrsava u kontekstu glavnog threada.
Synchronize() ne radi bez message loop-a, dakle, nije dostupan u konzolnim aplikacijama: http://coding.derkeiler.com/Ar...objectpascal/2003-12/0107.html .

A meni izgleda kao konzolna aplikacija.. U svakom slucaju nema message loop-a izmedju begin i end. :)

Indy je kvazi-sinhroni posto uglavnom ne blokira direktno thread u kojem se izvrsava na pravim I/O pozivima nego koristi skarabudzevine kao sto je ova ovde. Mogu da ti preporucim Synapse (http://synapse.ararat.cz/), ali on nema IRC klijent...

 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Dinamicko kreiranje komponenti i dodeljivanje Event handlera

[ Pregleda: 2932 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.