• Jueves 18 de Abril de 2024, 07:14

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - solarin

Páginas: [1]
1
C/C++ / Dudas Sobre Punteros
« en: Martes 13 de Noviembre de 2007, 11:45 »
Si tengo el siguiente puntero :
Código: Text
  1.  
  2. unsigned int * pointer;
  3.  
  4.  
si realizo
Código: Text
  1.  
  2. pointer++;
  3.  
  4.  

cuantos bytes estoy avanzando?
 -El tamaño del unsigned int, simplemente un byte, 4 ?


Por otro lado, lei que no es seguro para un metodo devolver un puntero a un objeto que a sido creado en la pila. Pero no me quedo para nada claro el xq. Alguien me podria resolver la duda?

Gracias.

2
Programación de Videojuegos / Generador De Caras Aleatorio
« en: Jueves 11 de Enero de 2007, 11:13 »
Hola a tod@s,

Necesitaria crear un generador de caras aleatorio. Que lenguajes de programacion i/o tecnicas me recomendariais usar.

Asi de forma rapida se me ocurre generar diferentes tipos de ojos/pelo/nariz/barba etc i hacer un mix de manera aleatoria. Pero antes de empezar a capturar imagenes y guardarlas queria saber si alguien ya tiene alguna cosa parecida o que pudiera aprovechar.

gracias por todo.

3
C/C++ / Trazas De Informacion En Modo Debug
« en: Miércoles 22 de Noviembre de 2006, 12:04 »
Buenas,

Estoy intentado que mis trazas (tipo "cout" o "printf") sólo aparezcan en modo debug. Para ello estoy usando la macro _rpt0. Pero al cerrar la aplicacion, se me generan muchos mensajes q no tengo ni idea de donde salen.

Alguien ha usado anteriormente esta macro? alguna idea de evitar esta clase de mensajes al cerrar la aplicacion?

gracias.

4
C/C++ / Reseteo De Alarmas
« en: Miércoles 6 de Septiembre de 2006, 09:16 »
buenas,

Necesito usar alarmas para el programa que estoy desarrollando. He estado mirando el timesetevent y los timers en general.

La pregunta es: Como puedo resetear el contador de un timer antes que este llegue a su fin, y que vuelva a empezar?

Por lo que he visto puedes hacer cosas una vez el timer a expirado.

El timer lo necesito para un control de alarmas. Tengo que recivir datos cada 20ms, si no tengo los datos (el timer expira), genero un error. Pero si recibo datos, deberia resetear el timer para que vuelva a empezar a contar los 20ms.

Supongo que una opcion seria comprobar , una vez ha saltado el timer, que durante los 20ms he recivido info, si la tengo, reiniciar el timer y si no la tengo generar error. Pero esto no es exactamente lo mismo que resetear el timer. Ya que puedo tener durante los 20ms mas de una llegada de info.

Gracias por la ayuda.

5
C/C++ / Vector De Bits
« en: Martes 5 de Septiembre de 2006, 18:24 »
Estoy intentando implementar el calculo de CRC. Para ello necesito un vector con todos los bits del mensaje para poder hacer la division con el polinomio generador.

Los mensajes que estoy tratando son entre 130 ~ 154 bits. Como se define/crea en C++ un array de bits?

Gracias.

6
Visual C++ / Problemas Al Generar El .pdb
« en: Lunes 28 de Agosto de 2006, 15:24 »
Estoy usando el VS6 (siiii es muuu viejoo), y no me genera el fichero .pdb, con lo que no puedo hacer un debug de mi programa. Lo tengo puesto que me compile en modo debug pero no hay manera. Al intentar debugar me sale el siguiente error (logico):

Citar
Loaded 'D:\CMS\Debug\CMS.exe', no matching symbolic information found.

Alguna idea? Tengo que configurar alguna cosa mas para que se me genere el .pdb? puedo generar yo este fichero?

Gracias.

7
C/C++ / Error Al Devolver Un String
« en: Viernes 25 de Agosto de 2006, 10:25 »
Tengo el siguiente codigo:

(las variables estan definidas en el codigo, solo pongo la parte importante)
Código: Text
  1.  
  2. Class CMessage{
  3.  
  4. string CMessage::GenerateString()
  5. {
  6.  
  7.   string finalmessage;
  8.   stringstream s;
  9.   s << codeClass;
  10.     finalmessage = "CODE: "+s.str() + " - ";
  11.   //finalmessage = codeClass + "----";
  12.    finalmessage = finalmessage + messageClass + " - ";
  13.  
  14.   return finalmessage;
  15. }
  16.  
  17. }
  18.  
  19.  
Código: Text
  1.  
  2. //A.h
  3.  
  4. Class A {
  5.   public:
  6.      string StringToLogger(MessagesNotifier_Client* client, CMessage *msg)
  7.   private:
  8.      string msgToLogger;
  9. }
  10.  
  11.  
  12.  
Código: Text
  1.  
  2. // A.cpp
  3.  
  4.   string  A::StringToLogger(MessagesNotifier_Client* client,CMessage *msg)
  5.     {  
  6.   msgToLogger = msg->GenerateString(); // Error here.
  7.   invokerClass = typeid( client ).name();
  8.   msgToLogger = msgToLogger + invokerClass;
  9.   msgToLogger = msgToLogger + "----";
  10.   // Enviamos:  "Codigo_de_error" + ---- + "miss de error" + ---- + "Nombre de la classe"
  11.   return msgToLogger;
  12.  
  13.    }
  14.  
  15. }
  16.  
  17.  
  18.  

Dentro de la clase A, estoy llamando al metodo "GenerateString" de la clase CMessage. Este metodo tiene que devolver un string, y lo genera correctamente. El error aparece cuando el compilador assigna el valor devuelto por "GenerateString" a el string msgToLogger.

El error es el siguiente:


Access violation reading in 0xcdcdcdf1.
Access violation writting in 0xcdcdcdcd.


Alguna idea o sugerencia?

Gracias.

8
C/C++ / Monitorizar Puerto Com1
« en: Jueves 24 de Agosto de 2006, 12:29 »
Tengo un programa que envia (o deberia) enviar datos a traves de uno de los puertos serie.

Qual es la mejor manera de mirar si estoy realmente enviado alguna cosa? Es decir, hay alguna manera en windows de monitorizar lo que se envia por los puertos serie (COM1, COM2)?

9
Visual C++ / No Matching Symbolic Information Found
« en: Jueves 24 de Agosto de 2006, 11:48 »
Tengo desarrollado un programa, que compila y se ejecuta bien. El problema es que no hace lo que tiene que hacer... :whistling:

Pero cuando me pongo a debugar, me sale un miss diciendo que todos mis breakpoints van a ser desabilitados y los siguientes miss de error:

Loaded 'D:\CMS\Debug\CMS.exe', no matching symbolic information found.
Loaded 'ntdll.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\kernel32.dll', no matching symbolic information found.
Loaded symbols for 'C:\WINDOWS\system32\MFC42D.DLL'
Loaded symbols for 'C:\WINDOWS\system32\MSVCRTD.DLL'
Loaded 'C:\WINDOWS\system32\gdi32.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\user32.dll', no matching symbolic information found.
Loaded symbols for 'C:\WINDOWS\system32\MFCO42D.DLL'
Loaded 'C:\WINDOWS\system32\mfc42loc.dll', no matching symbolic information found.
The program 'D:\CMS\Debug\CMS.exe' has exited with code 0 (0x0).

Estoy usando Visual C++ 6 y windows.

Alguna idea de como puedo arreglar esto. Intentar hacer que el programa tire sin debug... es como una locura ... :(

10
C/C++ / Timers En C++?
« en: Miércoles 23 de Agosto de 2006, 10:20 »
Estoy programdo un simulador para un driver. Basicamente voy reciviendo tramas y actuo en consecuencia. Tengo una trama que me obliga durante los siguientes 3 segundos a mantener unos valores (aunque sigo reciviendo tramas). Como me puedo montar un timer d 3 secs?


Gracias por todo.

11
C/C++ / Vectores En Funciones
« en: Lunes 21 de Agosto de 2006, 15:33 »
Tengo declarada una funcion para calcular el checkSum de un vector:
Código: Text
  1.  
  2. int GetCheckSum(unsigned char *msg)
  3. {
  4.     //Calcular Checksum
  5.     return checkSum;
  6. }
  7.  
  8.  

Esta la funcion la llamo desde diferentes sitios, el problema es que cada vez le paso un vector de tamaño diferente:

Código: Text
  1.  
  2. void function1()
  3. {
  4. unsigned char msg[10];
  5. int checksum;
  6. msg[0] = 1;
  7. msg[1] = 23;
  8. .
  9. .
  10. .
  11. msg[9] = 4;
  12. checksum = GetCheckSum(unsigned char &msg);
  13.  
  14. }
  15.  
  16. void function2()
  17. {
  18. unsigned char msg[4];
  19. int checksum;
  20. msg[0] = 1;
  21. msg[1] = 23;
  22. .
  23. .
  24. .
  25. msg[3] = 4;
  26. checksum = GetCheckSum(unsigned char &msg);
  27. }
  28.  
  29. void function3()
  30. {
  31. unsigned char msg[55];
  32. int checksum;
  33. msg[0] = 1;
  34. msg[1] = 23;
  35. .
  36. .
  37. .
  38. msg[54] = 4;
  39. checksum = GetCheckSum(unsigned char &msg);
  40. }
  41.  
  42.  
  43.  


Lo cual me da el siguiente error al compilar:

m:\driver\cms_comm.cpp(487) : error C2664: 'getCheckSum' : cannot convert parameter 1 from 'unsigned char (*)[6]' to 'unsigned char *'

Como tengo que declarar la funcion o su llamada para poder pasar vectores de diferente tamaño?  Gracias.

12
C/C++ / Puntero This
« en: Jueves 17 de Agosto de 2006, 15:24 »
en el proyecto en el que estoy trabajando todas mis clases derivan de una clase llamada "Notifier"

Notifier, tiene un metodo para enviar mensajes:
Código: Text
  1.  
  2. void NotifyWarningMessage(Notifier* noti, Message msg)
  3.  
  4.  

Como que todas las clases derivan de notifier, para llamar esta clase siempre me pasan el puntero "this"


Código: Text
  1.  
  2. //tengo que enviar un warning
  3.  
  4. NotifyWarningMessage(this,msg);
  5.  
  6. //donde msg ya esta creado anteriormente
  7.  
  8.  


La idea es escribir en el log que clase ha enviado el warning, pero si hago lo siguiente:

Código: Text
  1.  
  2. void NotifyWarningMessage(Notifier* noti, Message msg){
  3.  
  4.      invokerClass = typeid( noti ).name();
  5.  
  6. //loggear el warning...
  7. }
  8.  
  9.  
  10.  


invokerClass siempre es del tipo madre, es decir del tipo Notifier.

Hay alguna manera para que a partir del puntero this pueda tener el nombre de la clase hijo?

Es decir:

Si tengo declarada una clase asi:


public ClasseTest : public Notifier


Que invokerClass sea ClasseTest y no Notifier.


Gracias.

13
C/C++ / Problemas De Cast
« en: Miércoles 16 de Agosto de 2006, 12:09 »
Hola foro,

Tengo las siguientes clases:

-Component
-Client
-Logger

Component es una interfaz que usa el patron singleton:

Component.h
Código: Text
  1.  
  2. class Component
  3. {
  4. public:
  5.      virtual void Metodo1();
  6.      Component* GetInstance();
  7. private:
  8.       Component* _Instance;
  9.  
  10. };
  11.  
  12.  

Con su implementacion:

Component.cpp

Código: Text
  1.  
  2. #include "Component.h"
  3. #include "Logger.h"
  4.  
  5. Component* Component::GetInstance()
  6. {
  7.   if (_Instance == 0)
  8.   {
  9.     _Instance = new Logger;
  10.   }
  11.  
  12.   return _Instance;
  13.  
  14. }
  15.  
  16. void Component::Metodo1(){}
  17.  
  18.  


Logger es la clase que implementa esta interfaz:

logger.h
Código: Text
  1.  
  2. #include "Component.h"
  3. #include "Client.h"
  4.  
  5. class Logger : public Component
  6. {
  7.  
  8. public:
  9.  
  10.   Logger();
  11.   ~Logger();
  12.         void Metodo1();
  13.  
  14.  
  15.  

Con su implementacion:

Logger.cpp
Código: Text
  1.  
  2.  
  3. void Logger::Metodo1()
  4. {
  5.   //Alguna accion por hacer
  6. }
  7.  
  8.  

En ultimo lugar tengo la clase Client, que es la clase desde la se accedera a la interfaz "component"

Client.h

Código: Text
  1.  
  2.  
  3. #include "Logger.h"
  4. #include "Component.h"
  5.  
  6. class Client
  7. {
  8. public:
  9.  
  10.   Client();
  11.   ~Client();
  12.       void   EnviaMiss();
  13.  
  14. private:
  15.    
  16.     Logger *the_Component;
  17. };
  18.  
  19.  

Con su implementacion:


Client.cpp

Código: Text
  1.  
  2. #include "Client.h"
  3.  
  4. Client::Client()
  5. {
  6.     the_Component = new Logger;
  7. }
  8. Client::~Client()
  9. {
  10.     delete the_Component;
  11. }
  12. void Client::EnviaMiss()
  13. {
  14.      the_Component= the_Component->GetInstance();
  15.      the_Component->Metodo1();      
  16. }
  17.  
  18.  
  19.  
  20.  

El error me aparece al compilar cuando intento hacer el "GetInstance()" dentro del metodo EnviaMiss, con el siguiente mensaje:

Client.cpp : error C2440: '=' : no se puede realizar la conversión de 'Component *' a 'Logger *'
   La conversión de la base al elemento derivado requiere dynamic_cast o static_cast


Alguna recomendacion de que hacer con este error?

Gracias.

14
Patrones de Diseño / Decorator
« en: Jueves 10 de Agosto de 2006, 18:39 »
Hola,

Necesito informacion sobre el patron "decorator". alguna idea de alguna guia,url,etc interesante?

15
Otros CLR / Heredar De Clases De Otros Proyectos
« en: Jueves 10 de Agosto de 2006, 12:00 »
Estoy usando Visual C++ .NET 2003. Tengo dentro de una solucion , distintos proyectos

Solucion 'mi_solucion' (x proyectos)
+----proyecto A
+----proyecto B
+----proyecto C
+----proyecto D
+----proyecto E


En proyecto A, tengo una clase que hereda de otra que esta en proyecto B, pero al llamar (desde A) a un metodo definido en la classe B, me salta el siguiente error:


BometController.obj : error LNK2019: símbolo externo "public: void __thiscall MessagesNotifier_Client::NotifyWarningMessage(class MessagesNotifier_Client *,class CMessage *)" (?NotifyWarningMessage@MessagesNotifier_Client@@QAEXPAV1@PAVCMessage@@@Z) sin resolver al que se hace referencia en la función "public: void __thiscall BometController::ComprobarPresion(float,float)" (?ComprobarPresion@BometController@@QAEXMM@Z)


BometController es la clase en el proyecto A y MessagesNotifier_Client la clase en el proyecto B. NotifyWarningMessage el metodo que al llamar salta el error LNK2019.


Tengo que configurar de alguna manera especial el entorno?


Gracias.

16
C/C++ / Errores De Link
« en: Jueves 10 de Agosto de 2006, 11:34 »
Estoy teniendo muchos problemas con el error LNK2019 en VC++ .NET 2003

Tengo una clase que deriva de otra:

//controller.h

#include MessagesNotifier_Client

class Controller : public MessagesNotifier_Client
{
public:

Controller();
~Controller();

void TempVerification(int a, int B);

};

//controller.cpp

Controller::Controller(){}
Controller::~Controller(){}

void Controller::TempVerification(int a, int B)
{
if ( abs(a - B) > 23 ){
NotifyWarningMessage("warning"); //ERROR LNK2019

}



El error de lNK2019 salta al llamar al metodo NotifyWarningMessage, definido en MessagesNotifier_Client.

Estoy usando Visual Studio .net 2003. una solucion con varios proyectos donde uno de ellos contiene a controller y el otro a MessagesNotifier_Client.


===Solution "BigTest"
== - proyecto A
|
------ Controller.h
------ Controller.cpp
== - proyecto B
|
------ MessagesNotifier_Client.cpp
------ MessagesNotifier_Client.h

Alguna idea de donde tengo el error? Es problema de la configuracion del visual?
Gracias por todo.

Páginas: [1]