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 

Problemas con archivos de recursos y STRINGTABLE

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Problemas con archivos de recursos y STRINGTABLE Responder citando

Hola a todos,

El caso es que estoy teniendo verdaderos problemas para añadir un archivo de recursos bien simple a mi proyecto y que funcione. El archivo sólo contiene cadenas de texto con el objetivo de facilitar la internacionalización del programa.

Pues bien, tengo el siguiente archivo de recursos denominado "recursos.rc":

Código:
#include "recursos.rh"

STRINGTABLE
{
  _msgSayHello,     "Hola Mundo"
}


El archivo "recursos.rh" sería como sigue:

Código:
#define _msgSayHello 1000


Luego, dentro del proyecto, trato de utilizar esa cadena pero siempre me devuelve un valor vacío. Por supuesto, he añadido "recursos.rc" al proyecto y he hecho un porrón de pruebas de veinte maneras diferentes, utilizando tanto System::LoadResourceString como con un objeto AnsiString utilizando AnsiString::LoadStr pero la cosa no funciona. Por ejemplo, en un formulario pongo lo siguiente:

Código:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
       AnsiString *msgSayHello;
       msgSayHello = new AnsiString ();
       msgSayHello->LoadStr (_msgSayHello);
       Application->MessageBox (msgSayHello->c_str(), NULL, MB_OK);
}


Pero msgSayHello permanece siempre con valor NULL y, obviamente, el MessageBox no muestra nada. En la cabecera de ese archivo tengo un include "recursos.rh" así que la constante _msgSayHello está definida igual que para el archivo .rc por lo que el identificador ha de ser correcto. Ya no se que demonios hacer, he perdido todo el día con esto y no encuentro una solución.

¿Alguien podría/querría ayudarme?

Gracias por adelantado,
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Prueba cambiando la tercera línea por una de estas:

*msgSayHello = msgSayHello->LoadStr(_msgSayHello);
*msgSayHello = LoadStr(_msgSayHello);
*msgSayHello = String::LoadStr(_msgSayHello);
*msgSayHello = AnsiString::LoadStr(_msgSayHello);
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: ¡Gracias mil! Responder citando

Las cuatro maneras propuestas parecen funcionar perfectamente, aunque me queda la duda del ¿por qué?... Question

Muchísimas gracias, Leo, por tu prontísima y acertadísima respuesta. Very Happy
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Presuposicionesº Responder citando

Bueno, ya veo, el caso es que yo presuponía (erroneamente como es claro), que el String::LoadStr modificaría directamente la propiedad que almacena la cadena en el objeto. ¡Pues no!... Smile

Gracias otra vez Wink
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.