Tiene pinta de ser un error por precedencia de operadores, o posiblemente por la sobrecarga de operadores (¿== quizá?). Prueba a usar paréntesis:
Código:
Nombre = ((Usuario->Text == Prueba) ? "sysdba" : Usuario->Text);
También puede ser porque la propiedad Text no sea AnsiString sino otra cosa (¿char*?) y no sea capaz de hacer la conversión.
O vice versa, que sí lo sean y que sea la constante "sysdba" la que da problemas:
Código:
// Asegurándose de que TODO sea AnsiString...
Nombre = (((AnsiString)(Usuario->Text)) == Prueba) ? (AnsiString)"sysdba" : (AnsiString)(Usuario->Text));
Sé que uso muchos paréntesis pero me fío de la precedencia de operadores de C++ menos que de un camión de bombas conducido por un ciego. No sería la primera vez que C++ me cambia el orden cuando hay conversión de tipos con sobrecarga de operadores de por medio. Por ejemplo, que me lo evalúe como:
Código:
(Nombre = (Usuario->Text == Prueba)) ? "sysdba" : Usuario->Text;