![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
bueno hilo seria un objeto y no una funcion ¿Me estas diciendo que hacerlo global seria la mejor solucion?
|
|
#2
|
||||
|
||||
|
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
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;
}
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
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);
}
}
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));
}
|
|
#3
|
||||
|
||||
|
Sin conocer cual es el problema a resolver es muy difícil aconsejarte sobre como dar una solución orientada a objetos.
No indicas nada de Hilo, supongo que se destruye bien. Sólo en las clases derivadas de VCL deben crearse los objetos como punteros. C++ puede crear objetos con sólo declararlos lo que es más sencillo y directo pero precisan que escribas un constructor por defecto o pases los parámetros apropiados. Por ejemplo: Código:
THilo *Hilo = new THilo(true) TInt Int(Hilo); Código:
TInt Int(new THilo(true)); Un mal diseño hará que el código sea poco eficiente y difícil de entender y depurar. En este sentido no puedo decirte si es la mejor solución a tu problema, o al menos lo que yo haría, que no tiene por que ser mejor que tu solución. Saludos. |
|
#4
|
||||
|
||||
|
THilo es del tipo TThread y es creado y destruido correctamente. Otra cosa ¿Existe alguna herramienta que conozca que te indique si tiene fallos como que uses new y luego no lo destruyas con delete? Creo que alguien hizo una herramienta que hacia algo asi sobr el binario aunque no lo probé.
|
|
#5
|
||||
|
||||
|
#6
|
||||
|
||||
|
lo unico que encontré en el foro fue esto: http://www.clubdelphi.com/foros/show...ghlight=fastmm y es sobre delphi. Tengo entendido por lo que he podido leer que fastmm funciona en builder pero estoy buscando informacion al respecto de esas aopciones que hablan pero en español no encuentro nada. Tambien he visto que se habla de codeguard pero tampoco lo veo nada claro y nada en español.
|
|
#7
|
||||
|
||||
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Pasar mi clase a una clase de 3 capas o lo mas parecido | elarys | OOP | 2 | 07-04-2011 23:02:54 |
| clase que contiene otra clase definida de forma posterior | astwin | OOP | 5 | 20-02-2009 11:26:55 |
| Es posible hacer una nueva clase de componente ?? | ilichhernandez | OOP | 7 | 05-05-2008 16:01:30 |
| Clase | jakuna | OOP | 2 | 30-08-2007 21:50:35 |
| Clase para hacer ABM | mateamargo | OOP | 3 | 25-10-2005 22:34:23 |
|