Skip Navigation Links
Novas Tecnologias
Ferramentas Adicionais
Ferramentas Adicionais


Dica No :
87
Assunto : Visual Basic
Titulo: Utilizando InStr para reduzir chamadas a funções

Gostou do texto ? Vote e dê sua opinião! Pontuação atual :

Translate this page now :






Adicione aos Favoritos!
BlogBlogs Rec6 Linkk Ueba Technorati Delicious DiggIt! StumbleUpon


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.


Nome :
E-mail:
Comentarios :
 
 
Os Últimos Comentários
data: 10/14/2016 7:12:00 PM
nome: PsbGkrijaxrJwDRloCq
email: jimos4581rzt@hotmail.com
comentário:
jNvXnS http://www.FyLitCl7Pf7kjQdDUOLQOuaxTXbj5iNG.com

data: 10/14/2016 6:38:00 PM
nome: kJpSKrkoibTzOwgKwuM
email: jimos4581rzt@hotmail.com
comentário:
g9ItzA http://www.FyLitCl7Pf7kjQdDUOLQOuaxTXbj5iNG.com

data: 8/9/2016 4:41:00 PM
nome: gcRsxMKwGkNDTF
email: jimos4581rt@hotmail.com
comentário:
201gZw http://www.FyLitCl7Pf7kjQdDUOLQOuaxTXbj5iNG.com

 1  
Dicas
Dica do Dia
Receba Dicas Por Email
E-mail :  
 


 (help)
Aceito receber informativos do devASPNet, informações de eventos e treinamentos

Veja Quais Informativos Você Receberá

Pesquisar Dicas
Pesquisar Artigos, Dicas e Noticias

Banco de Dados
Algumas Entrevistas
Links Importantes

Búfalo Informática, Treinamento e Consultoria
R. Alvaro Alvim, 37/920 Centro - Cinelândia - Rio de Janeiro Cep: 20031-010
Tel : (21) 2262-1368 (21) 9240-5134 E-mail : Contato@bufaloinfo.com.br