Ver Mensaje Individual
  #12  
Antiguo 30-06-2014
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Reputación: 11
aguml Va por buen camino
Bueno lo he conseguido pero no se si es muy ortodoxo o no. Lo que he hecho es esto:
En TInt.h:
Código:
#ifndef Inth
#define Inth
//---------------------------------------------------------------------------

#include "THilo.h"

//---------------------------------------------------------------------------

//Declaracion de la clase
class TInt
{
        public:
                TInt(THilo *H);
                ~TInt();

                AnsiString __fastcall toHex(int value);
                AnsiString __fastcall toBin(int value);

        private:
                THilo *Hilo;

};
//---------------------------------------------------------------------------
#endif
En el TInt.cpp tengo esto:
Código:
#include "TInt.h"

TInt::TInt(THilo *H)
{
        Hilo = H;
}
//---------------------------------------------------------------------------

AnsiString __fastcall TInt::toHex(int value)
{
        AnsiString retval = "";
        __try{
                if(Hilo != NULL)
                        retval = Hilo->FuncToHex(value);
        }catch(...){
        }
        return retval;
}
//---------------------------------------------------------------------------

AnsiString __fastcall TInt::toBin(int value)
{
        AnsiString retval = "";
        __try{
                if(Hilo != NULL)
                        retval = Hilo->FuncToBin(value);
        }catch(...){
        }
        return retval;
}
En el TPrueba.h tengo esto:
Código:
#include <vcl.h>

#ifndef PRUEBAH
#define PRUEBAH
#include "TInt.h"

   class TPrueba
   {
        public:
         TPrueba();
                ~TPrueba();
                void __fastcall IniciarHilo(void);
                TInt *Int;

        private:
                THilo *Hilo;

   };
#endif
En el TPrueba.cpp tengo esto:
Código:
TPrueba::TPrueba()
{

}
//---------------------------------------------------------------------------

TPrueba::~TPrueba()
{
        delete Int;
        Int = NULL;
}
//---------------------------------------------------------------------------

void __fastcall TPrueba::IniciarHilo(void)
{
    //Creo el hilo
        Hilo = new THilo(true);

        if(Hilo == NULL)
        {
                MessageBox(Application->Handle,
                           "No se ha podido crear el hilo correctamente.\n Cierre la aplicación e intentelo de nuevo.",
                           "Error",
                           MB_OK | MB_ICONERROR | MB_APPLMODAL);
        }
        else{
                //Creo la otra clase
                Int = new TInt(Hilo);
        }
}
y en el Unit1.cpp tengo esto:
Código:
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
        try{
        prueba  = new TPrueba();

    }
    catch(...){
    }
}

void __fastcall TForm1::Button1Click(TObject *Sender)
{
        ShowMessage(prueba->Int->toHex(100));
        ShowMessage(prueba->Int->toBin(100));
}
Hilo no hace falta que lo ponga aquí porque el problema era acceder a el desde otra clase donde no estaba declarado y asi lo he podido solucionar ¿que os parece esta solucion? ¿chapuza? ¿correcta?
Responder Con Cita