Hola
cavdrz, bienvenido al foro.
Tu problema se debe a los casting entre char* y AnsiString. Fijate en la declaración:
Código:
extern PACKAGE void __fastcall ShowMessage(const AnsiString Msg);
Builder hace un casting automático de char* a AnsiString porque este último tiene definido un constructor de esta forma:
Código:
__fastcall AnsiString(const char* src);
Así, el compilador sabe crear un AnsiString desde un char* y la conversión será automática.
Sin embargo el paso contrario tienes que explicitarlo. Fíjate en la declaración de
Application->MessageBox:
Código:
int __fastcall TApplication::MessageBox(const char * Text, const char * Caption, int Flags);
Para que tu código funcione basta que hagas esto:
Código:
Application->MessageBox(("Hola " + Edit1->Text).c_str(), "Mensaje",
MB_OK | MB_ICONINFORMATION);
Que sería lo mismo que:
Código:
Application->MessageBox((AnsiString("Hola ") + Edit1->Text).c_str(), "Mensaje",
MB_OK | MB_ICONINFORMATION);
La función
c_str() convierte un AnsiString en un char*
Espero haberme sabido explicar.
Saludos.