SoloCodigo

Programación General => C/C++ => C++ Builder => Mensaje iniciado por: bapho666 en Sábado 11 de Abril de 2009, 00:53

Título: caracteres especiales en un memo! confusion...
Publicado por: bapho666 en Sábado 11 de Abril de 2009, 00:53
tengo el siguiente codigo con un case el cual no admite caracteres especiales en un Memo y los envia a un Listbox el codigo si me funciona es el siguiente:
void __fastcall TForm1::Memo1KeyPress(TObject *Sender, char &Key)
{
switch (Key){
case '|': { Application->MessageBox("Valor Incorrecto","Error",0);
ListBox1->Items->Add(Key);
Key=5;
break; }
case '!': { Application->MessageBox("Valor Incorrecto","Error",0);
ListBox1->Items->Add(Key);
Key=5;
break; }
case '#': { Application->MessageBox("Valor Incorrecto","Error",0);
ListBox1->Items->Add(Key);
Key=5;
break; }
case '$': { Application->MessageBox("Valor Incorrecto","Error",0);
ListBox1->Items->Add(Key);
Key=5;
break; }
case '%': { Application->MessageBox("Valor Incorrecto","Error",0);
ListBox1->Items->Add(Key);
Key=5;
break; }
case '&': { Application->MessageBox("Valor Incorrecto","Error",0);
ListBox1->Items->Add(Key);
Key=5;
break; }
case '/': { Application->MessageBox("Valor Incorrecto","Error",0);
ListBox1->Items->Add(Key);
Key=5;
break; }
case '(': { Application->MessageBox("Valor Incorrecto","Error",0);
ListBox1->Items->Add(Key);
Key=5;
break; }
case ')': { Application->MessageBox("Valor Incorrecto","Error",0);
ListBox1->Items->Add(Key);
Key=5;
break; }
case '=': { Application->MessageBox("Valor Incorrecto","Error",0);
ListBox1->Items->Add(Key);
Key=5;
break; }
case '?': { Application->MessageBox("Valor Incorrecto","Error",0);
ListBox1->Items->Add(Key);
Key=5;
break; }
case '¡': { Application->MessageBox("Valor Incorrecto","Error",0);
ListBox1->Items->Add(Key);
Key=5;
break; }
case '¿': { Application->MessageBox("Valor Incorrecto","Error",0);
ListBox1->Items->Add(Key);
Key=5;
break; }
case '{': { Application->MessageBox("Valor Incorrecto","Error",0);
ListBox1->Items->Add(Key);
Key=5;
break; }
case '}': { Application->MessageBox("Valor Incorrecto","Error",0);
ListBox1->Items->Add(Key);
Key=5;
break; }
case '[': { Application->MessageBox("Valor Incorrecto","Error",0);
ListBox1->Items->Add(Key);
Key=5;
break; }
case ']': { Application->MessageBox("Valor Incorrecto","Error",0);
ListBox1->Items->Add(Key);
Key=5;
break; }
case '<': { Application->MessageBox("Valor Incorrecto","Error",0);
ListBox1->Items->Add(Key);
Key=5;
break; }
case '>': { Application->MessageBox("Valor Incorrecto","Error",0);
ListBox1->Items->Add(Key);
Key=5;
break; }
case '*': { Application->MessageBox("Valor Incorrecto","Error",0);
ListBox1->Items->Add(Key);
Key=5;
break; }
case '+': { Application->MessageBox("Valor Incorrecto","Error",0);
ListBox1->Items->Add(Key);
Key=5;
break; }
case '~': { Application->MessageBox("Valor Incorrecto","Error",0);
ListBox1->Items->Add(Key);
Key=5;
break; }
case '-': { Application->MessageBox("Valor Incorrecto","Error",0);
ListBox1->Items->Add(Key);
Key=5;
break; }
case '_': { Application->MessageBox("Valor Incorrecto","Error",0);
ListBox1->Items->Add(Key);
Key=5;
break; }
case '"': { Application->MessageBox("Valor Incorrecto","Error",0);
ListBox1->Items->Add(Key);
Key=5;
break; }
}
}

Tratando de optimizar ese codigo en menos lineas hice lo siguiente para que a travez del key con los caracteres del codigo ascii que van del (32 al 64) que son los caracteres especiales trate de hacerlo funcionar pero a la hora que corro el programa el Memo admite todo lo que ingreso como caracteres especiales y los manda al Listbox.


void __fastcall TForm1::Memo1KeyPress(TObject *Sender, char &Key)
{
if ( Key > '32' || Key < '64')
 {
Application->MessageBox("No Valido","Alerta",0);
   (ListBox1->Items->Add(Key));
    }
    Key=5;
    }

que puedo hacer que esta mal soy nuevo en el C++ builder 5 agradeceria su pronta respuesta con algun comentario que puediera ser de ayuda!
Título: Re: caracteres especiales en un memo! confusion...
Publicado por: lair en Martes 2 de Junio de 2009, 23:25
Cita de: "bapho666"
void __fastcall TForm1::Memo1KeyPress(TObject *Sender, char &Key)
{
if ( Key > '32' || Key < '64')
 {
Application->MessageBox("No Valido","Alerta",0);
   (ListBox1->Items->Add(Key));
    }
    Key=5;
    }
intenta remover las comillas, por que asi me parese que le estas diciendo que es un caracter 32 o 64 y no sus valores
if ( Key > 32 || Key < 64)