Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-02-2008
intercubo intercubo is offline
Miembro
 
Registrado: feb 2008
Posts: 11
Poder: 0
intercubo Va por buen camino
Post Case else

hola:

quisiera saber si puedo poner un for dentro del else de un case, porque al parecer no esta ejecutando lo que yo quiero:

aqui esta el codigo:
Código Delphi [-]
Case Ord(C) of
      97..122:
      Col:=0; //Caracter
      48..57:
      Col:=2;  //Numero
      10,13:
      Col:=22;  //Enter
      else //else del case
        begin
          for x:=0 to 24 do
             Begin
              if C=Columnas[x] then
                Begin
                  Col:=x;  //Caracter de la Matriz
                End
              else
                Col:=24; //Otra cosa
             end;
        end;

Gracias!!!
Responder Con Cita
  #2  
Antiguo 19-02-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por intercubo Ver Mensaje
hola:

quisiera saber si puedo poner un for dentro del else de un case, porque al parecer no esta ejecutando lo que yo quiero:
Me pregunto que es lo que no hace.....

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #3  
Antiguo 19-02-2008
intercubo intercubo is offline
Miembro
 
Registrado: feb 2008
Posts: 11
Poder: 0
intercubo Va por buen camino
Código Delphi [-]
Case Ord(C) of      97..122:      Col:=0; //Caracter      
48..57:      Col:=2;  //Numero      10,13:      Col:=22;  //Enter      
else //else del case        
begin          
for x:=0 to 24 do             
Begin              
if C=Columnas[x] then                
Begin                  
Col:=x;  //Caracter de la Matriz                
End              
else                
Col:=24; //Otra cosa             
end;       
 end;

Col siempre toma el valor 24, aunque C si sea igual a uno de los valores del arreglo Columnas[] cuando no es una de las 2 primeras opciones (caracter o numero)

Última edición por intercubo fecha: 19-02-2008 a las 04:38:31.
Responder Con Cita
  #4  
Antiguo 19-02-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por intercubo Ver Mensaje
Col siempre toma el valor 24, aunque C si sea igual a uno de los valores del arreglo Columnas[] cuando no es una de las 2 primeras opciones (caracter o numero)
Pues he probado tu código y si me da el número de indice del arreglo columnas.

Código Delphi [-]
procedure TForm1.BitBtn1Click(Sender: TObject);
var
  x,y: integer;
begin
  C := #123; // #123 = caracter {
  for y := 0 to 24 do begin
      Columnas[y] := Char(y+100); //Aquí ingreso los caracteres 100 al 124
  end;
  Case Ord(C) of
     97..122: Col:=0; //Caracter
     48..57: Col:=2;  //Numero
     10,13: Col:=22;  //Enter
     else begin
            for x := 0 to 24 do begin
                if C=Columnas[x] then begin
                   Col:=x;  //Caracter de la Matriz
                end
                else Col:=24; //Otra cosa
            end;
     end;
  end;
end;

El caracter #123={ está en el indice 23 de Columnas......

No entiendo cual es tu problema

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #5  
Antiguo 19-02-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Código Delphi [-]
procedure TForm1.BitBtn1Click(Sender: TObject);
var
  x,y: integer;
begin
  C := #123; // #123 = caracter {
  for y := 0 to 24 do begin
      Columnas[y] := Char(y+100); //Aquí ingreso los caracteres 100 al 124
  end;
  Case Ord(C) of
     97..122: Col:=0; //Caracter
     48..57: Col:=2;  //Numero
     10,13: Col:=22;  //Enter
     else begin
            for x := 0 to 24 do begin
                if C=Columnas[x] then begin
                   Col:=x;  //Caracter de la Matriz
                   ShowMessage('Salio en Columna '+Inttostr(x)); //Muestro el valor de x
                   Exit; //Salgo del for
                end
                else Col:=24; //Otra cosa
            end;
     end;
  end;
end;

Edito: Aunque creo que se donde está el problema, como no haces un brake en el for, por eso es que sigue mostrando Col=24....., he corregido el código agregando un Exit.

Vaya genere otro post en lugar de editar el anterior....... bueno, inc(egostar)
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #6  
Antiguo 19-02-2008
intercubo intercubo is offline
Miembro
 
Registrado: feb 2008
Posts: 11
Poder: 0
intercubo Va por buen camino
gracias, funciona bien con el exit, pero el problema es que al parecer se sale de los 2 for, solo quiero que se salga del inmediato superior, como puedo hacer eso, o que otra solucion tengo?

de antemano muchas gracias por la ayuda!
Responder Con Cita
  #7  
Antiguo 19-02-2008
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
En lugar de exit; llama a break;

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #8  
Antiguo 19-02-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por jachguate Ver Mensaje
En lugar de exit; llama a break;

Hasta luego.

Pues gracias amigo jachguate, me creeras que no me acordaba del famoso brake, de hecho nunca he tenido que usar el abortar un bucle..., exit, halt, brake son palabras que no uso normalmente....

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #9  
Antiguo 19-02-2008
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Bueno, yo si las uso... aún recuerdo que break fue introducido en Turbo Pascal 7 (si no me traiciona la memoria) y desde el inicio le vi la utilidad, pues da una salida elegante para casos donde no nos quedaba mas que retorcer un poco las cosas:

Código Delphi [-]
procedure PagarSalarios;
var
  I: Integer;
begin
  for I:= 0 to Empleados.Count - 1 do
  begin
    PagarSalarioEmpleado(Empleados[i]);
    if SaldoCuenta < 0 then
      Break;
  end;
end;
que mal ejemplo, verdad..

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #10  
Antiguo 19-02-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por jachguate Ver Mensaje
Bueno, yo si las uso... aún recuerdo que break fue introducido en Turbo Pascal 7 (si no me traiciona la memoria) y desde el inicio le vi la utilidad, pues da una salida elegante para casos donde no nos quedaba mas que retorcer un poco las cosas:
Bueno, si la use cuando trabajaba con Turbo Pascal, pero con delphi no he tenido que usarla hasta ahora, no se si sea bueno o malo, o todo lo contrario.

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
case con strings molinero1 Varios 1 23-04-2007 13:34:24
case??? ivandelphi Varios 4 27-03-2007 00:58:55
CASE o IFF en SQL dark_c SQL 3 13-01-2007 20:07:33
Uso del Case IVAND SQL 4 05-04-2006 17:39:48


La franja horaria es GMT +2. Ahora son las 18:42:02.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi