Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Clase TDataEvent (https://www.clubdelphi.com/foros/showthread.php?t=31768)

vaa892 17-05-2006 13:59:57

Clase TDataEvent
 
Al intentar asignar una propiedad al evento OnData de un componente TXCom (componente para capturar datos del puerto COM) de esta forma:

objComm->OnData =(TDataEvent) eventoXComm1Data;

Obtengo este error:
[C++ Error] uClienteObj.cpp(102): E2015 Ambiguity between 'TDataEvent' and 'Db::TDataEvent'

Lo del (TDataEvent) se lo he puesto para realizar la conversión al tipo esperado por la propiedad OnData.

Lo que yo entiendo del tipo de error que me da es que la única clase TDataEvent que "encuentra" es la de la librería DB.

¿Que puedo hacer? Se aceptan todo tipo de consejos.

Lepe 17-05-2006 19:11:57

El error dice que en los includes de tu Forma existen 2 archivos donde existe el TDataEvent, uno (no se sabe donde) y el otro en la unidad DB.

Delante de TdataEvent tendrás que añadir el archivo donde está definido el TDataEvent, suponiendo que está en XComData.cpp:

objComm->OnData =(XComData.TDataEvent) eventoXComm1Data;

No sé si es un punto o el operador "->", pero la idea es esa.

Saludos

vaa892 18-05-2006 12:48:24

Buenas,
la verdad es que si le quito el conversor a la asignación (lo de (TDataEvent)) el error que tengo es este:
[C++ Error] uClienteObj.cpp(102): E2034 Cannot convert 'void (_fastcall * (_closure )(TObject *,const unsigned long))(TObject *,const unsigned long)' to 'TDataEvent'

He probado lo que me dices, pero es que la definición de este componente está en Pascal. He probado a hacer el XComdrv. pero no me sale ninguna posibilidad ni me lo reconoce (con el -> tampoco).

Alguna otra idea?

Estoy tratando de controlar los datos recibidos por el puerto COM, conoceis algun otro componente que me permita hacer esto? actualmente uso XComDrv, que me va bien pero que tengo este problemilla al gestionar este evento OnData.

Lepe 18-05-2006 17:33:08

Una cosita, los errores que te da, son errores de compilación; no quiere decir que el componente sea bueno o malo.... eso lo descubrirás despues de hacer el programa entero.

El error que aparece es que el evento que tú has definido no tiene los mismos parámetros que el original TDataEvent. Tienes que mirar como está definido el evento, qué parámetros tiene y ponerles los mismos.

Saludos

vaa892 18-05-2006 18:27:39

Si, te entiendo, que este error no tiene nada que ver con el funcionamiento del componente. Te comento:

Yo el componente lo he probado añadiendo el componente a un formulario gráfico. Por lo tanto, para acceder a este evento (evento OnData) he accedido mediante el inspector de objetos --> doble click al evento y de ahí he cogido la cabecera del método, que luego he utilizado para implementarlo. Por eso "creo" que los parámetros que he especificado en el evento si son correctos.

¿Que otra cosa puedo intentar?

Muchas gracias.

jumanor 19-05-2006 04:47:04

Evento
 
holas:

La deficion en delphi es esta

Cita:

TDataEvent = procedure (AThread: TIdPeerThread;AData:TObject) of object;
Acabo de probar en el builder lo siguiente y no me genera errores

Cita:

//esto en el h
#include <IdNNTPServer.hpp>
...
void __fastcall Puntero(TIdPeerThread * AThread, TObject * AData);
...
Cita:

//esto en el cpp
void __fastcall TForm1::Puntero(TIdPeerThread * AThread, TObject * AData)
{
//TODO: Add your source code here
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TDataEvent mio;
mio=Puntero;
}
y no me genera ningun error salvo


Código Delphi [-][C++ Warning] Unit1.cpp(28): W8004 'mio' is assigned a value that is never used


que es por q no utilizo.

Haber asigna a mio la la direccion d tu funcion aver q sucede??????
:rolleyes:

Saludos


La franja horaria es GMT +2. Ahora son las 03:13:45.

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