Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-05-2006
vaa892 vaa892 is offline
Registrado
 
Registrado: abr 2006
Posts: 9
Poder: 0
vaa892 Va por buen camino
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.

Última edición por vaa892 fecha: 18-05-2006 a las 18:03:08.
Responder Con Cita
  #2  
Antiguo 17-05-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
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
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #3  
Antiguo 18-05-2006
vaa892 vaa892 is offline
Registrado
 
Registrado: abr 2006
Posts: 9
Poder: 0
vaa892 Va por buen camino
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.
Responder Con Cita
  #4  
Antiguo 18-05-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
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
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #5  
Antiguo 18-05-2006
vaa892 vaa892 is offline
Registrado
 
Registrado: abr 2006
Posts: 9
Poder: 0
vaa892 Va por buen camino
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.
Responder Con Cita
  #6  
Antiguo 19-05-2006
jumanor jumanor is offline
Registrado
 
Registrado: ago 2005
Posts: 5
Poder: 0
jumanor Va por buen camino
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??????


Saludos
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Ayuda Con Clase DES edgusano .NET 2 04-04-2005 22:05:41
Métodos de clase. jplj OOP 14 22-11-2004 09:30:19
...la clase... Jure Humor 0 27-07-2004 20:00:47
Una clase al ClipBoard bustio OOP 2 07-07-2004 00:35:16
Clase NO registrada marcial Varios 3 05-12-2003 14:50:38


La franja horaria es GMT +2. Ahora son las 09:13:32.


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
Copyright 1996-2007 Club Delphi