Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

casting de componentens

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: casting de componentens Responder citando

Estoy haciendo una funcion para acceder a una base de datos desde varios formularios, el codigo es el siguiente:
Código:


void EntradaABaseDatos(TForm *Form, TDataSource *DataSource, TDatabase *Database, TQuery *Query)
{
        TDataSource *DS;
        TDatabase *DB;
        TQuery *QU;

        DS = (TDataSource *)Form->Components->FindComponent(DataSource->Name);
        DB = (TDatabase *)Form->Components->FindComponent(Database->Name);
        QU = (TQuery *)Form->Components->FindComponent(Query->Name);

        DS->DataSet = QU;
        DB->DatabaseName = "ARESDB";
        DB->LoginPrompt = false;
        DB->Connected = true;
        QU->DatabaseName = "ARESDB";
        QU->SQL->Clear();

/*        Form->DataSource->DataSet = Form->Query;
        Form->Database->DatabaseName = "ARESDB";
        Form->Database->LoginPrompt = false; //sense login
        Form->Database->Connected = true;

        Form->Query->DatabaseName = "ARESDB";
        Form->Query->SQL->Clear();
*/
}



Me da un error __fastcall TComponent::GetComponent(int).
_________________
Be water my friend.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Cambia las siguientes lineas

Código:
TDataSource *DS;
        TDatabase *DB;
        TQuery *QU;

        DS = (TDataSource *)Form->Components->FindComponent(DataSource->Name);
        DB = (TDatabase *)Form->Components->FindComponent(Database->Name);
        QU = (TQuery *)Form->Components->FindComponent(Query->Name);


por estas otras

Código:
TDataSource *DS = static_cast<TDatabase*>(DataSource);
TDatabase *DB = static_cast<TDatabase*>(Database);
TQuery *QU = static_cast<TQuery*>(Query);


Saludos.
_________________
Cool
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

holaa
la verdad no entiendo mucho el static_cast todavia pero viendo esta funcion que funciona con la rectificacion de cesar perfectamente me surge una duda de pura ignorancia , espero que alguien pueda contestarme
la cosa es que ayer hice algo parecido para unos ComboBox que tienen que hacer las mismas cosas y es tedioso programar cada evento y tal , bien
el tema es este

void EntradaABaseDatos(TForm *Form, TDataSource *DataSource, TDatabase *Database, TQuery *Query)
{

TDataSource *DS = static_cast<TDatabase*>(DataSource);
TDatabase *DB = static_cast<TDatabase*>(Database);
TQuery *QU = static_cast<TQuery*>(Query);
y luego las propiedades o lo que sea
}
funciona perfecto
pero si en vez de poner el stactic_cast no lo pongo y lo dejo asi tal cual

void EntradaABaseDatos(TForm *Form, TDataSource *DataSource, TDatabase *Database, TQuery *Query)
{
las propiedades o lo que sea, o sea:
Form->Caption = "lo que sea";
DataSource->DataSet = DataBase;
Query->Close(); ---->por ejemplo
no lo he probado con componentes de datos pero con un boton un label y un edit para probar desde otro formulario y funciona , imagino que con componentes de bases de datos tambien deberia funcionar.
que diferencia hay entre meter el static_cast o no ponerlo¿?¿?
ya he dicho antes que es una pregunta de ignorante
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

https://cppbuilder.es/viewtopic.php?p=8687#8687
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

algo voy entendiendo , aunque no creo que pudiera explicar lo poco que entendi con palabras jejeje , a parte que sirve como conversor entre otras cosas
gracias
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.