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