Ver Mensaje Individual
  #2  
Antiguo 19-04-2017
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Reputación: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
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;
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine

Última edición por Ñuño Martínez fecha: 19-04-2017 a las 15:54:20. Razón: Usé ANSISTRING en vez de AnsiString... Y me di cuenta de otra cosa.
Responder Con Cita