Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   sintaxis de select case O___o (https://www.clubdelphi.com/foros/showthread.php?t=45040)

NSL94 21-06-2007 08:34:04

sintaxis de select case O___o
 
Buenas a todos recopilando informacion por el foro llegue a la conclusion de que un select case se escribia mas o menos asi:

select
case a
when 1 then showmessage('1')
when 2 then showmessage('2')
etc...
end

pero escribiendo yo:

select
case tabla1.FieldByName('campo1').AsString
when 'eso' then showmessage('eso')
when 'lootro' then showmessage('lootro')
end

me falla y me dice que me falta un ";" en la linea "case tabla1.FieldByName('campo1').AsString"

Alguien me podria decir cual seria la sintaxis corecta?
Gracias a todos, y que tengais un buen dia... que ya estamos a jueves!!

Mick 21-06-2007 11:55:19

Umm que raro, esa sintaxis no se parece a nada que haya visto en delphi XD. La sintaxis correcta es asi:

Código:

case n of
1: ShowMessage('el uno');
2: ShowMessage('el dos');
3: begin
      ShowMessage('el tres');
      ShowMessage('el tres otra vez');
    end;
end;

ATENCION: Solo se puede usar para tipos ordinales (enteros, chars) pero no para cadenas de caracteres, en este caso tendras que usar IFs.

Lepe 21-06-2007 13:37:00

la sentencia original "select case" es del lenguaje SQL, usado por ejemplo dentro de un TQuery (en su propiedad sql), en un procedimiento almacenado / disparador, etc.

Saludos

NSL94 21-06-2007 17:03:25

xDD con razon no me va.
 
Con razon me pide punto y comas por todo los sitios xDDD -_-'
Erf eso de saber la logica pero no la sintaxis es lo peor, pero weno al menos esperemos que alguno se haya reido leyendo esta pocas lineas.

En fin para volver al tema, me decis que no existe ninguna manera de hacer 1 select case de Strings? tan solo acepta numericos y chars :eek:
Ams... Eske mi madre ya lo decia, niño pa que te complicas la vida, tu usa las herramientas que ya conozcas... Amos que tendre que volver a poner los ifs xDDD
Enga un saludo y gracias, y si a alguien se le ocure como hacer el select case con string que no se corte :D
---Paz---

Lepe 21-06-2007 18:18:12

Cita:

Empezado por NSL94
Enga un saludo y gracias, y si a alguien se le ocure como hacer el select case con string que no se corte :D

Ocurrencias tenemos muchas... pero es Delphi quien no lo permite, así que ... donde no hay, no se puede rascar :D

Pueden ser char, integer y tipos enumerados. Con strings se puede hacer algo... pero en definitiva es un char, por ejemplo:
Código Delphi [-]
var  s:string;
begin 
 s:= 'Mio';
 // "s" se puede interpretar como un array de caracteres, 
// empieza en el índice 1.
Case s[1] of
 'M' : lo que sea;
 's' : lo que sea;
end;

PD: De reirnos nada, todos nos hemos hecho esta pregunta tarde o temprano ;).

Saludos

Mick 22-06-2007 11:24:09

Hay quien prefiere definir una funcion de este estilo para poder utilizar cases:

Código:

function SearchString(const Str:string; const List:array of string): Integer;
begin
  Result:= High(List);
  while (Result>=0) AND (Str<>List[Result]) do Dec(Result);
end;

Y despues se usaria del siguiente modo:

Código:


 case SearchString( 'gato', [ 'perro', 'gato' ,'serpiente' ]) of
    0: ShowMessage('Es un perro');
    1: ShowMessage('Es un gato');
    2: ShowMessage('Es una serpiente');
  -1: ShowMessage('No conozco ese animal');
 end;

Saludos


La franja horaria es GMT +2. Ahora son las 11:06:41.

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