Delphi - Convertir if anidados en un case

 
Vista:

Convertir if anidados en un case

Publicado por Josefina (5 intervenciones) el 07/12/2016 07:45:11
hola buenas noches tengo un formulario en el cual doy de alta datos y tengo varios dbedit al darle en el boton aceptar comparo que estos dbedit no esten vacios si lo estan largo un mensaje la cosa es que los hice haciendo if anidados. Funciona perfecto pero creo que no es la opcion mas optima y si desearia agregar a futuro mas campos deberia seguir incrementando los if. Como podria convertir todos esos if a un case que valla verificando cada dbedit que no este vacio ? alguna ayuda muchas gracias

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
if dbedit1.Text=EmptySTR then
begin
      showmessage('campos vacios');
end else
begin
if dbedit2.Text=EmptySTR then
 
begin
 showmessage('campos vacios');
end else
begin
if dbedit3.Text=EmptySTR then
begin
 showmessage('campos vacios');
end else
begin
  if dbedit4.Text= EmptySTR then
  begin
     showmessage('campos vacios');
    end else
    begin
    if dbedit4.Text= EmptySTR then
    begin
       showmessage('campos vacios');
      end else
      begin
         if dbedit5.Text= EmptySTR then
    begin
           showmessage('campos vacios');
       end else
    begin
 
    fModulo.tClientes.Post;
    self.Close;
    end;
      end;
  end;
end;
 
end;
end;
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Convertir if anidados en un case

Publicado por E.T. (1201 intervenciones) el 08/12/2016 00:13:22
Segun yo, lo que pretendes no es posible, el case funciona con expresiones ordinales, es decir, numeros o caracteres, no cadenas.
Lo que podrias hacer es resumir en un if usando or's, ejemplo:
1
2
3
4
5
6
7
if (dbedit1.Text=EmptySTR) or (dbedit2.Text=EmptySTR) or (dbedit3.Text=EmptySTR)
or (dbedit4.Text=EmptySTR) or (dbedit5.Text=EmptySTR) then begin
      showmessage('campos vacios');
end else begin
    fModulo.tClientes.Post;
    self.Close;
end;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar