isalpha es una funcion de ANSI C pero con eso estas haciendo una comprobacion sobre el primer byte de la direccion de un puntero, ya que Edit->Text.c_str() te devuelve un puntero de char.
Proba asi:
Código:
if (esNumero(Edit1->Text.c_str()))
{
MessageBox(0, "Resultado", "Es un numero", 0);
}
else
{
MessageBox(0, "Resultado", "No es un numero", 0);
}
//str = cadena de caracteres terminada en 0 (lo normal)
bool esNumero(char *str)
{
for (;*str;str++)
{
if (!isalpha(*str))
{
return false;
}
}
return true;
}
Tambien le podrias agregar una comprobacion para que se salte caracteres que te parezcan validos y especialmente una funcion para que quite todos los espacios (y tabulaciones) tanto delante como detras de la cadena ej. " 456 " me parece que deberia ser un numero valido. Podes usar isdigit para comprobar que sea un numero.