| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
fmmarzoa Ens

Registrado: 21 Ago 2002Mensajes: 34
|
Publicado: Mie 21 Ago, 2002 8:40 am Asunto: Problemas con archivos de recursos y STRINGTABLE |
|
|
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 |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Mie 21 Ago, 2002 9:05 am Asunto: |
|
|
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 |
|
 |
fmmarzoa Ens

Registrado: 21 Ago 2002Mensajes: 34
|
Publicado: Mie 21 Ago, 2002 10:09 am Asunto: ¡Gracias mil! |
|
|
Las cuatro maneras propuestas parecen funcionar perfectamente, aunque me queda la duda del ¿por qué?...
Muchísimas gracias, Leo, por tu prontísima y acertadísima respuesta.  |
|
| Volver arriba |
|
 |
fmmarzoa Ens

Registrado: 21 Ago 2002Mensajes: 34
|
Publicado: Mie 21 Ago, 2002 10:18 am Asunto: Presuposicionesº |
|
|
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!...
Gracias otra vez  |
|
| Volver arriba |
|
 |
|