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.561
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.561
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.561
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
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 19:32:21.


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