Tente fazer desta forma

function CaseString(const s: string; const x: array of string): Integer;
var i: Integer;
begin
 Result := -1;
 for i := Low(x) to High(x) do begin
   if s = x[i] then begin
     Result:= i;
     Break;
   end;
 end;
end; 


Use desta forma 

        Case CaseString(ArquivoExtensao,['.QRP','.JPG','.PDF']) Of
         0: showmessage('Quickreport');
         1: showmessage('Imagem');
         2: begin
             showmessage('Adobe');
            End;
        End;

 
________________________________

WELLINGTON 
TECLE UP informática - Softwares - Hardwares - Redes
Analista / Programador de Sistemas 
*  [EMAIL PROTECTED]

________________________________

Frase da semana: "As pessoas que vencem neste mundo são as que procuram as 
circunstâncias de que precisam e quando não as encontram, as criam"

-----Mensagem original-----
De: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Joao 
Morais
Enviada em: terça-feira, 13 de fevereiro de 2007 09:17
Para: delphi-br@yahoogrupos.com.br
Assunto: Re: [delphi-br] Re: O Comando Case

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

Links do Yahoo! Grupos

 



Responder a