CASE

28/01/2006

Amigos teenho uma duvida que esta me atrapalhando de verdade!
Por que que isso não da certo?
  for iCont:=0 to MDIChildCount-1 do
    case MDIChildren[iCont&93; of
      formCadastroUsuario: begin
                            formCadastroUsuario.TabUser.Append;
                           end;



Caezar

Respostas

28/01/2006

Tnaires

Olá
Extraído da ajuda do Delphi:
(...) selectorExpression is any expression of an [b:fb8ec505bb]ordinal type[/b:fb8ec505bb] (...)

Definição de ordinal type:
Ordinal types include integer, character, Boolean, enumerated, and subrange types.

Abraços


Responder Citar

28/01/2006

Caezar

Ok!
Acho que vou ter que usar um if né?


Responder Citar

28/01/2006

Tnaires

Isso.
A única limitação da instrução case q realmente me incomoda, em relação a outras linguagens, é o fato de não poder usá-la com strings :?


Responder Citar

28/01/2006

Macario

Não testei o codigo, mas pq não funciona? sendo que iCont é inteiro??


Responder Citar

28/01/2006

Tnaires

Macario, não funciona pq o case só analisa tipos de dados do tipo Ordinal.
Veja meu post acima.
Abraços


Responder Citar

28/01/2006

Caezar

Obrigado amigos, resolvi o problema usando o prop tag!
Criei um outro post com mais uma dúvida se alguem puder dar uma olhada:
[url]http://forum.clubedelphi.net/viewtopic.php?p=241718#241718[/url]


Responder Citar

28/01/2006

Macario

bom isso funciona

for x:= 1 to 5 do
  begin
    case x of
     1 : showmessage(´numero´+ inttostr(x));
     2 : showmessage(´numero´+ inttostr(x));
     3 : showmessage(´numero´+ inttostr(x));
     4 : showmessage(´numero´+ inttostr(x));
     5 : showmessage(´numero´+ inttostr(x));
    end;
  end;


agora aqui tem um equivoco, que nao tinha percebido

for iCont:=0 to MDIChildCount-1 do 
    case MDIChildren[iCont&93; of 
      &91;b&93;formCadastroUsuario&91;/b&93;: begin 
                            formCadastroUsuario.TabUser.Append; 
                           end;


mas que talvez assim funcione


for iCont:=0 to MDIChildCount-1 do 
    case MDIChildren&91;iCont&93; of 
      MDIChildren&91;iCont&93;: begin 
                            formCadastroUsuario.TabUser.Append; 
                           end;

é so uma ideia ja que não conheço formularios MDI.

:arrow:


Responder Citar

28/01/2006

Tnaires

Acho q mesmo se a idéia do Macario fucionar, não será eficiente, pois esta condição sempre será executada. Seria equivalente a fazer:
case 1 of
  1:  // Isso sempre seria executado
end;

Abraços


Responder Citar

28/01/2006

Macario

correto, so postei..pra esclarecer minha duvida...hehe


Responder Citar