PDA

Ver la Versión Completa : CASE/OF... (y la madre del cordero)


papulo
15-09-2005, 10:33:23
Como mi experiencia con DELPHI, calculada en un intervalo de 0 a 100, donde 0 es nada y 100 todo, calculo que estoy a un -25 todavia, es por eso que aun inundare el foro con mis preguntitas de parvulario, pero no por ello menos importantes.

El caso es que estoy intentando que con la instruccion CASE/OF lo siguiente:

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if key = #13 then
case Edit1.Text of
VAR : ShowMessage('VAR`');
INT : ShowMessage('INT');
else ShowMessage('Escribe mejor, chavalote');}
end;

end.


A destacar, que en la ayuda pone que CASE/OF no se puede usar con strings.

¿Es correcto lo que he leido, y por ende, absurdo lo que estoy intentando, al menos por este camino?

Suegerencias para hacer lo mismo, seran bienvenidas.

Que pasen un buen dia, chicos!!:confused:

dec
15-09-2005, 10:59:08
Hola,

El caso es que "case .. of" solo puede utilizarse con tipos ordinales o expresiones de este tipo. En la ayuda de Delphi sobre los "Case statements" se dice expresamente que los tipos "string" no son válidos. Creo que tal vez en tu caso fuera bastante con hacer uso de "If .. Else", aunque fuera cuestión de anidar algunos de ellos.

Para más información te remito a la ayuda de Delphi, al apartado que he mencionado. Fíjate en la variable "Key" del método que has referido arriba. Es de tipo "Char" y este un tipo ordinal. Podría codificarse algo como esto sin problemas:


procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
case Key of
'a': ShowMessage('Pulsaste la A');
'b': ShowMessage('Pulsaste la C');
else
ShowMessage('Ni la A ni la B pulsaste');
end;
end;

papulo
15-09-2005, 12:14:01
Entonces, y esperando que sirva de precedente, ¡HE COMPRENDIDO LA AYUDA! UOOOOOOOOOO!!!!

No os imaginais lo feliz que me hace :D

Seguire implementado cosillas por aqui.

PD: Programar es incluso divertido...

rastafarey
15-09-2005, 15:52:01
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
If Key = #13 Then Begin
If CompareText(Edit1.Text, 'VAR') Then
ShowMessage('VAR')
Else If CompareText(Edit1.Text, 'INT') Then
ShowMessage('INT')
Else
ShowMessage('Escribe mejor, chavalote')
End;
end;


Ha y una cosa mas creo que eres una de las personas que he oido que sabe mas delphi por que en el intervalo que dices yo tengo como 0,2 de 100 o quisas menos y veras que uso delphi como hace 12 años y cada dia aprendo algo nuevo y en ese momento me entero que cada dia se menos o que no se nada.

papulo
15-09-2005, 16:44:26
No te equivoques Rastarey, estoy a -25, aun me faltan 125 para llegar al nivel maestro :D

Solo hace un mes y tres semanas que estoy con DELPHI. Asi que lo que estoy aprendiendo es todo.

papulo
15-09-2005, 17:09:10
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
If Key = #13 Then Begin
If CompareText(Edit1.Text, 'VAR') = 0 Then
ShowMessage('VAR')
Else If CompareText(Edit1.Text, 'INT') = 0 Then
ShowMessage('INT')
Else
ShowMessage('Escribe mejor, chavalote')
End;
end;

(...insertar aqui una percepcion erronea sobre mi nivel de DELPHI. Estoy muy PezQueñin todavia... ¡y lo que me queda!) Solo matizar, que faltaba igualar los if a 0, para que tuvieran una condicion que cumplirse y asi poder ejecutar las instrucciones anidadas.

PD: Si utilizo mal algun termino, sientanse libres de corregirme que tomare buena nota.

rastafarey
27-09-2005, 15:51:17
Tienes razon.