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 

MessageBox en XE

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: MessageBox en XE Responder citando

Porque este codigo, que funcionaba en BCB6 no lo hace en XE ?? Twisted Evil Rolling Eyes

//---------------------------------------------------------------------------
bool PregSiNo( AnsiString texto, AnsiString titulo )
{
return Application->MessageBox(texto.c_str(), titulo.c_str(),
MB_ICONQUESTION | MB_YESNO) == IDYES;
}
//---------------------------------------------------------------------------
void Aviso( AnsiString texto, AnsiString titulo )
{
Application->MessageBox( texto.c_str(), titulo.c_str(),
MB_ICONINFORMATION | MB_OK );
}
//---------------------------------------------------------------------------
void AvisoError( AnsiString texto, AnsiString titulo )
{
if ( texto.Length() > 0 )
{
Application->MessageBox( texto.c_str(), titulo.c_str(),
MB_ICONEXCLAMATION | MB_OK );
Abort();
}
}


me da errores en la compilacion ... Embarassed
entonces lo he convertido en esto

//---------------------------------------------------------------------------
void Aviso( AnsiString texto, AnsiString titulo )
{
wchar_t *tex, *tit;
tex = texto.WideChar(tex, texto.WideCharBufSize());
tit = titulo.WideChar(tit, titulo.WideCharBufSize());

Application->MessageBox( tex, tit, MB_OK );
// MB_ICONINFORMATION | MB_OK );
}


PERO ... Shocked
igualmente, al ejecutar me da un Access Violation at address ...

Desde ya, gracias por vuestra atencion
_________________
Luis Anibal Mendez
Analisis, Programacion, Asesoramiento
luisanibalmendez@gmail.com
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Cambia en la declaración de las funciones "AnsiString" por "String". Así estarás usando UnicodeString en las versiones que lo soportan, o AnsiString en las que no.

Busca mas información sobre UNICODE, en el foro se ha hablado del tema cuando salio la primera versión que trajo estos cambios (la 2009), y también en la web de Embarcadero hay artículos hablando de los cambios, e incluso en la ayuda.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Amigos,
Sigo las instrucciones de _Leo, buscando en el foro.
Tambien he googleado, pero todo lo que me aparece esta' dirigido a versiones anteriores, ergo, doy vueltas en lo mismo. Crying or Very sad
Encontre' ejemplos de MessageBox para la version XE del Builder, pero, en vez de utilizar variables, aparecen constantes de la forma L"mensaje" ... Embarassed

Uso el BCB desde su version inicial, siempre he hecho uso y abuso de lo que el entorno y las VCL permiten, sin "descender", manteniendome, por llamarlo asi, en sobrevolando en niveles superiores.
Lejos estoy de pretender conseguir el trabajo hecho, pero, si me ayudan a "apuntar" hacia algo que me deje CERCA del objetivo ... o sea, algun enlace, un ejemplo ...
Gracias. Very Happy
_________________
Luis Anibal Mendez
Analisis, Programacion, Asesoramiento
luisanibalmendez@gmail.com
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

He aqui la simple y sencilla solucion ...

//---------------------------------------------------------------------------
void Aviso( String texto, String titulo )
{
Application->MessageBox( texto.w_str(), titulo.w_str(),
MB_ICONINFORMATION | MB_OK );
}


o sea .w_str() sumado a la declaracion de String en vez de AnsiString solucionaron el problema.

Es como decia _Leo, habia que buscar, aunque el no obtener resultados motivo' mi mensaje anterior.
JA JA !! Very Happy hice catarsis y al poco rato "encontre" la solucion.
_________________
Luis Anibal Mendez
Analisis, Programacion, Asesoramiento
luisanibalmendez@gmail.com
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Yo te decia que cambiaras la declaración de AnsiString por String, sin tocar nada mas, que teóricamente debería de haberte funcionado Wink al menos hasta la versión 2010 que es la que uso.

Lo siguiente que ponía de buscar lo decía como complemento, no para solucionar este problema, sino para conocer un poco mas sobre estos cambios.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

_Leo,
Cambie' por String, como dijiste, pero no alcanzaba, luego vi por ahi un pedazo de texto con el w_str() y se termino' de cerrar el circulo.

Todo el problema parte de mi DESCONOCIMIENTO del lenguaje en sus caracteristicas mas "bajas", por eso es que en ocasiones circulo por callejones estrechos, donde no se' si hay salida.
Lo que tu contestaste estuvo muy bien y lo agradezco, a fin de cuentas, fue lo que me llevo a encontrar la mencionada salida.
Saludos.
_________________
Luis Anibal Mendez
Analisis, Programacion, Asesoramiento
luisanibalmendez@gmail.com
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
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.