Array
(
)

CASE

Caezar
   - 28 jan 2006

Amigos teenho uma duvida que esta me atrapalhando de verdade!
Por que que isso não da certo?
#Código

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



Tnaires
   - 28 jan 2006

Olá
Extraído da ajuda do Delphi:

Citação:
(...) selectorExpression is any expression of an ordinal type (...)

Definição de ordinal type:

Citação:
Ordinal types include integer, character, Boolean, enumerated, and subrange types.

Abraços


Caezar
   - 28 jan 2006

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


Tnaires
   - 28 jan 2006

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 :?


Macario
   - 28 jan 2006

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


Tnaires
   - 28 jan 2006

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


Caezar
   - 28 jan 2006

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


Macario
   - 28 jan 2006

bom isso funciona

#Código

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

#Código
for iCont:=0 to MDIChildCount-1 do 
case MDIChildren[iCont] of
[b]formCadastroUsuario[/b]: begin
formCadastroUsuario.TabUser.Append;
end;


mas que talvez assim funcione


#Código
for iCont:=0 to MDIChildCount-1 do 
case MDIChildren[iCont] of
MDIChildren[iCont]: begin
formCadastroUsuario.TabUser.Append;
end;

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

:arrow:


Tnaires
   - 28 jan 2006

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:
#Código

case 1 of
1: // Isso sempre seria executado
end;

Abraços


Macario
   - 28 jan 2006

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