IntroduçÃO 3 90 Dicas de Visual Basic 3


- VB3/VB4 - Procurando por nulos retornados por chamadas DLL



Baixar 313.7 Kb.
Página3/14
Encontro31.07.2016
Tamanho313.7 Kb.
1   2   3   4   5   6   7   8   9   ...   14

8 - VB3/VB4 - Procurando por nulos retornados por chamadas DLL


Após uma chamada a DLL (API), o valor retornado pode conter um nulo. Um dos meios de eliminar este nulo é procurar o caracter Chr$(0), como neste exemplo.

'yourstring é a string retornada pela API, e pode conter um nulo

Dim CheckForNull as Integer

CheckForNull = Instr(YourString, Chr$(0))

If CheckForNull > 0 then Left$(YourString, CheckForNull - 1)

Por Marc Mercuri*

9 - VB4 - Erros de Licença


Enfrentei um interessante problema tentando instalar a edição Enterprise do VB4 no Windows 3.1. A nova versão do VB usa o Registry, que no Windows 3.1 é limitada a 64Kb. Como consultor de uma grande empresa, tenho muitos softwares instalados no meu laptop para trabalhar em vários ambientes de cliente. Já havia instalado MS Office, MS Project e Lotus Suite Standart. O arquivo REG.DAT já estava cheio.

Quando instalei o VB4, não foram indicados erros de instalação. Mas, ao tentar usá-lo, juntamente com alguns controles, surgiram erros de "licença".

Liguei para a Microsoft e recebi a seguinte orientação:


  1. Remover manualmente o VB4.

  2. Remover manualmente todos os OCXs e OCAs do diretório Windows/System.

  3. Remover manualmente a OC25.DLL do Windows/System.

  4. Renomear REG.DAT para REG.OLD.

  5. Remover todos os itens do grupo Start Up (Iniciar).

  6. Remover as entradas Load e Run em WIN.INI.

  7. Remover todos os TSRs de AUTOEXEC.BAT.

  8. Se você utiliza um drive compactado, libere 6MB de espaço em um volume não compactado.

  9. "Resete" o micro.

  10. Reinicie o Windows e reinstale o VB4.

  11. Redefina as opções de sistema.

Nota do VBPJ*: Se estes erros de licença ocorrerem no Windows 95, remova e reinstale o VB4 para corrigir o problema.

Por Jim Gilligan*

10 - VB3/VB4 - Valores de retorno não requeridos


Você não precisa retornar valores em todas as funções. Mas, é uma implementação um pouco perigosa.

Private Sub Form_Load( )

dice


End Sub

Function dice ( ) As Integer

dice = Int(Rnd * 6) + 1

MsgBox "Esta é uma rotina que não retorna valor"

End Function

Nota da Redação: Esta implementação apenas é útil em empresas que padronizam todo o código para funções. Recomendamos o uso de sub e não de function, para um procedimento que não retorna valor (Charles A. Müller).

Dica de Andy Rosa*

11 - VB4 - Atualizando Bound Controls por uma List Box


Quando você desejar que os Bound Controls (controles associados a dados) sejam atualizados em eventos de listas ou combos, adicione este código no evento click (ou double-click) da lista ou combo:

Data1.RecordSet.Bookmark = DBCombo1.SelectedItem

Como resultado, seu registro corrente passará a ser o registro com a chave indicada na lista ou combo. Todos os Bound Controls são atualizados automaticamente. É necessário definir apenas as propriedades RowSource e ListField. Assim, economiza-se tempo que seria gasto em conversões de dados e atualização de campos.

Por Peter Klein*

12 - VB4 - Destacando uma linha em um DBGrid


Para destacar uma linha no controle DBGrid, adicione o registro corrente à SellBookmarks Collection:

Private Sub DBGrid_RowColChange _

(LatRow As Variant, ByVal LasRow As Integer)

If Data1.RecordSet.RecordCount Then

DBGrid.SelBookmarks.Add _

Data1.RecordSet.Bookmark

End If

End Sub


Por Peter Chyan*

13 - VB3/VB4 - Objetos vazios?


Não se pode usar a função IsEmpty para determinar se uma variável-objeto (como Form ou qualquer controle) possui valor. É possível, entretanto, usar a implementação abaixo para determinar se uma variável de form (ou outro objeto) está vazia.

If Not frmChild Is Nothing Then

Unload frmChild

End If


Por Arn Cota*

14 - VB3/VB4 - Livre-se dos zeros inúteis


Vamos retirar os zeros inúteis da variável mystring (que contém "00030"). Abaixo, um interessante caminho para isto.

Mystring = CStr(CInt(mystring))

Outro caminho é:

Mystring = Str(Val(mystring))



Por Brad Herbert* aperf. por Charles A. Müller

15 - VB3/VB4 - Campos na peneira


Muitas vezes, utiliza-se um campo formatado para exibição, e se grava um valor "peneirado", ou seja, de um formato específico. As funções abaixo "limpam" strings de números ou alfabéticos. Esta é uma alternativa ao controle Masked Edit.

Function FU_LimpaNumero (campo As String) As String

'recebe string numérica

'retorna string numérica sem pontos, vírgulas etc.

'exemplo FU_LimpaNumero("1.245,90") = "1234590"

Dim VA_Posicao As Integer

Dim VA_Caracter As String * 1

Dim VA_Resultado As String

VA_Resultado = ""

VA_Posicao = 1

Do While VA_Posicao <= Len(campo)

VA_Caracter = Mid$(campo, VA_Posicao, 1)

If IsNumeric(VA_Caracter) Then

VA_Resultado = VA_Resultado & VA_Caracter

End If


VA_Posicao = VA_Posicao + 1

Loop


FU_LimpaNumero = VA_Resultado

End Function

Function FU_LimpaAlfa (campo As String) As String

'recebe string alfanumérica

'retorna string de letras maiúsculas sem pontos, vírgulas, números etc.

'exemplo FU_LimpaNumero("Adq-7465") = "ADQ"

Dim VA_Posicao As Integer

Dim VA_Caracter As String * 1

Dim VA_Resultado As String

VA_Resultado = ""

VA_Posicao = 1

campo = UCase(campo)

Do While VA_Posicao <= Len(campo)

VA_Caracter = Mid$(campo, VA_Posicao, 1)

If Asc(VA_Caracter) > 64 And Asc(VA_Caracter) < 91 Then

VA_Resultado = VA_Resultado & VA_Caracter

End If

VA_Posicao = VA_Posicao + 1



Loop

FU_LimpaAlfa = VA_Resultado

End Function

Por Charles A. Müller




Compartilhe com seus amigos:
1   2   3   4   5   6   7   8   9   ...   14


©principo.org 2019
enviar mensagem

    Página principal