USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Dicas

  Visual Basic    (Miscelâneas)

Título da Dica:  Utilizando InStr para reduzir chamadas a funções
Postada em 8/9/2003 por Ð@®l@n            
Pode-se reduzir consideravelmente as chamadas a funções utilizando simplesmente a função InStr. Veja alguns exemplos :

If UCase$(char) = "A" Or UCase$(char) = "E" Or UCase$(char) = "I" Or UCase$ _
(char) = "O" Or UCase$(char) = "U" Then
' É uma vogal
End If

Esse código todo pode ser reduzido para :

If Instr("AaEeIiOoUu",char)<>0 then
'É uma vogal
end if

Com isso economizou-se processamento no IF e diversas chamadas à função Ucase

Veja agora com palavras distintas :

If LCase$(word) = "winter" Or LCase$(word) = "spring" Or LCase$(word) = _
"summer" Or LCase$(word) = "fall" Then
' É uma estação do ano
End If

Ou :

If Instr(";winter;spring;summer;fall;",";" & word & ";")<>0 then
'É uma estação do ano
end if

Novamente substituimos várias chamadas de função por uma única chamada a Instr. Neste código várias sutilezas devem ser observadas :

O ponto e virgula separando as estações faz com que caso a variável contenha "ingsum" ela não seja erroneamente reconhecida como uma estação.

A concatenação de ; na variável faz com que caso a variável contenha "ing;sum" ela não seja erroneamente reconhecida como uma estação.

A concatenação de ; na variável exige que a string das estações possua um ponto e vírgula no início e outro no final, para permitir o reconhecimento correto.

Mas não para por ai : Podemos substituir select cases inteiros pelo uso da Instr. Veja :

Select Case LCase$(word)
Case "zero"
result = 0
Case "one"
result = 1
Case "two"
result = 2
Case "three"
result = 3
Case "four"
result = 4
Case "five"
result = 5
Case "six"
result = 6
Case "seven"
result = 7
Case "eight"
result = 8
Case "nine"
result = 9
End Select

Ou :

result = InStr(";zero;;one;;;two;;;three;four;;five;;six;;;seven;eight;nine;", _
";" & LCase$(word) & ";") \ 6

Este exemplo calcula o valor do resultado com base na posição gerada pelo InStr. Para isso é necessário que todas as palavras tenham o mesmo comprimento, 6 caracteres no caso (o maior número + ;).

Com base nisso, foi feita uma divisão inteira da posição encontrada pelo InStr por 6, gerando assim o mesmo resultado que o select case geraria.
 


CyberWEB Network Ltda.    © Copyright 2000-2024   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página