Gabriel Herdt wrote:

> Jorge, obrigado pela ajuda. Mas esse não eu o caso eu me refiro ao 
> comando CASE OF do delphi(2005) não ao CASE WHEN de Select.
> Oque eu gostaria de fazer é o seguinte: 
> case trim(UpperCase(sNome)) of 'Gabriel': 
> Begin 
> …
> …
> End;
> `Gustavo': Begin
> …
> End;

Quanto a Delphi 8 em diante eu não sei, veja o que o help diz a você. 
Nas versões anteriores, case trabalha apenas com tipos enumeráveis, ou 
seja, char e números inteiros em geral. Ele não foi criado apenas pra 
bonito, mas porque o compilador pode gerar um código mais otimizado 
quando você tem comparações com estes tipos de dados.

Para fazer um 'case' com string você tem dois caminhos. O mais prático é 
com a infinidade de ifs. Não fica muito elegante mas fica um código bem 
otimizado, caso a sua preocupação também seja performance. Procure 
colocar na frente aqueles "if" que têm mais chance de dar verdadeiro. Se 
for indiferente, tanto faz a ordem. Para que o seu código fique menos 
feio, chame procedures locais ao invés de criar um begin/end para cada 
opção. Caso maiúsculo e minúsculo sejam indiferentes, use SameText ao 
invés de string = string.

O caminho mais elegante é criar uma classe para cada resposta, colocar a 
resposta correta como um método de classe e "registrar" todas as classes 
envolvidas em uma lista de classes. É uma solução bem mais escalável, 
mas se o que você precisa é apenas consultar alguns poucos nomes que 
nunca vão mudar, é melhor deixar esta solução de lado e ficar com ifs + 
procedures locais mesmo.

--
Joao Morais



-- 
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>

<*> Para ver as mensagens antigas, acesse:
    http://br.groups.yahoo.com/group/delphi-br/messages

<*> Para falar com o moderador, envie um e-mail para:
    [EMAIL PROTECTED]
 
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/delphi-br/

<*> Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html

 

Responder a