Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Distinguir el objeto sender en un evento (https://www.clubdelphi.com/foros/showthread.php?t=40214)

vejerf 09-02-2007 16:45:09

Distinguir el objeto sender en un evento
 
Hola...
El problema es el siguiente. Voy a realizar una aplicación que puede recibir datos x los puertos serie y cada vez q llega un caracter se genera un evento. El problema es q, a priori, no se cuantos puertos serie voy a tener x lo q me he definido una tabla que contiene una serie de elementos TVaCOMM.

Modems : array[1..255] of TVaCOMM

La cosa es q no se como hacer para distinguir q objeto del array es el q me esta originando el evento.

Gracias a todos...

Neftali [Germán.Estévez] 09-02-2007 17:21:07

¿Qué tipo de evento es el que te llega?
¿Lo has programado tú?

Anade un parámetro del tipo: TVaCOMM

vejerf 09-02-2007 17:41:46

Estoy usando un objeto VCL para el manejo de los puertos serie. Este objeto es el TVaCOMM y posee un evento con la siguiente definición:
TVaCommRxCharEvent = procedure(Sender: TObject; Count: Integer)
El evento se genera cada vez q llega un caracter al puerto serie. Supongo q este evento no lo puedo modificar para meter mas parámetros... aunq como no soy un experto programador tampoco lo se.
Gracias Neftali... si se te ocurre alguna idea te lo agradecería...

jhonny 09-02-2007 18:25:24

A ver, por lo que entiendo el objeto Sender debe ser un TVaCOMM y me supongo que esa clase TVaCOMM debe tener una manera de diferenciarlo de los demás, voy a asumir que esa manera de diferenciarse sea una propiedad llamada Posición de tipo Integer: en ese caso podria hacer un cast asi:

Código Delphi [-]
 
case TVaCOMM(Sender).Posicion do
begin
   //Y hacer lo que tengas que hacer...
end;
TVaCOMM(Sender).Posicion te mostraria la propiedad Posicion del objeto Sender.

Espero te haya comprendido bien y que esto te sirva de algo. ;)

Lepe 09-02-2007 19:59:16

Yo he entendido el asunto de otra forma, no sé si servirá:

Código Delphi [-]
 procedure TForm1.Evento_Al_recibir(Sender: TObject; Count: Integer);
var Encontrado :Boolean;
begin
  for i:= low(Modems) to High(Modems) do
  begin
    Encontrado := TVaCOMM(Sender) = Modems[i];
    if Encontrado then Break;
  end;
  If Encontrado then
    ShowMessage('Encontrado en el índice del array Modem: '+IntTostr(i));
end;

Saludos

vejerf 12-02-2007 14:20:15

Gracias chic@s por vuestra ayuda... asunto solucionado por el momento... pero x cambio de planes... ya os contare


La franja horaria es GMT +2. Ahora son las 01:07:51.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi