VARIANT: ALGUEM SABE ESSA?
Caros Colegas
Acredito que o problema esta no entendimento deste conceito
este conteudo passado para variáveis e objetos NULL, EMPTY , [Ô][Ô], NOTHING
ao executar este código
---------------------------------------------------------------------------------------------------
Private Sub Command1_Click()
Dim S As String
MySub S [ô]<--- Causa erro: [Ô]Runtime error 94: Invalid use of null[Ô]
MySub Label1.Caption [ô]<--- OK? Por que? Deveria dar erro também.
End Sub
Private Sub MySub(ByRef X As Variant)
X = Null
End Sub
--------------------------------------------------------------------------
O erro persiste sim para ambos pois se passa o CAPTION de uma LABEL o conteudo não é null e sim vazio que é totalmente diferente de null.
Nesse seu teste o conteudo de CAPTION não é NULL e sim VAZIO que visualmente é semelhante, apesar do resultado destas variáveis serem o mesmo o uso
não se aplica da mesma forma.
Para fazer este teste entre resultado de variável e controle de objeto é preciso colocar entre Parenteses (X) e (Label1.Caption)
Olhem estes exemplo em anexo para entender.
Fiz um exemplo para entender como comparar o conteudo de um objeto(LABEL) a variável(S tipo VARIANT):
Boa sorte a todos........
Acredito que o problema esta no entendimento deste conceito
este conteudo passado para variáveis e objetos NULL, EMPTY , [Ô][Ô], NOTHING
ao executar este código
---------------------------------------------------------------------------------------------------
Private Sub Command1_Click()
Dim S As String
MySub S [ô]<--- Causa erro: [Ô]Runtime error 94: Invalid use of null[Ô]
MySub Label1.Caption [ô]<--- OK? Por que? Deveria dar erro também.
End Sub
Private Sub MySub(ByRef X As Variant)
X = Null
End Sub
--------------------------------------------------------------------------
O erro persiste sim para ambos pois se passa o CAPTION de uma LABEL o conteudo não é null e sim vazio que é totalmente diferente de null.
Nesse seu teste o conteudo de CAPTION não é NULL e sim VAZIO que visualmente é semelhante, apesar do resultado destas variáveis serem o mesmo o uso
não se aplica da mesma forma.
Para fazer este teste entre resultado de variável e controle de objeto é preciso colocar entre Parenteses (X) e (Label1.Caption)
Olhem estes exemplo em anexo para entender.
Fiz um exemplo para entender como comparar o conteudo de um objeto(LABEL) a variável(S tipo VARIANT):
Boa sorte a todos........
Citação:Para fazer este teste entre resultado de variável e controle de objeto é preciso colocar entre Parenteses (X) e (Label1.Caption)
Interessante esse seu exemplo.
Afinal, o que fazem os parenteses numa chamada de Sub/Função?
Eu nunca uso. Poderia explicar?
Obrigado.
Caros Colegas
Estas expressões é de uso comum no VB isso vem do antigo VB 2.0, VB 3.0, VB 4.0, VB 5.0, VB 6.0 (he he he não sou tão velho assim)
Houve diferentes convenções para funções (parênteses necessário) e subcategorias (sem parênteses permitida, a não ser chamada utilizando a palavra-chave Call).
Resumindo:
Os parênteses () são usados para conter os argumentos passados para funções ou métodos.
Os colchetes [] são usados para acessar elementos de matrizes (arrays).
As chaves { } são usadas para conter múltiplas instruções. Com o uso de chaves é possÃvel colocar várias instruções dentro de uma única funçõa ou fluxo de código.
Isso são vertentes de uso de expressões para montar um código ou efetuar processos matemáticos dentro dos compiladores para cada linguagem tem um significado similar e muito semelhante mas nunca igual.
Acredito que viram em meu simples projeto que passei, ambos os parametros do Objeto Label e Variável do tipo VARIANT valores como NULL, [Ô][Ô], EMPTY, NOTHING que matematicamente são diferentes e cada um tem um uso especÃfico que apesar do exemplo simples o resultado foi igual e/ou identico.
Tem muita coisa que se analisarmos com um pouco de critério verá semelhanças entre VB, VB.Net, C#, J#, F#, C, C++, ASM, JAVA2EE, COBOL, PASCAL, BASIC, FORTRAN, etc....
Temos ainda aspas simples, aspas duplas, interrogação, dolar, asterisco, entre outros simbolos que nacesceram dessas linguagens e estão esquecidas por causa da melhoria da forma de utilizar as instruções para escrever código.
Boa Sorte.
Estas expressões é de uso comum no VB isso vem do antigo VB 2.0, VB 3.0, VB 4.0, VB 5.0, VB 6.0 (he he he não sou tão velho assim)
Houve diferentes convenções para funções (parênteses necessário) e subcategorias (sem parênteses permitida, a não ser chamada utilizando a palavra-chave Call).
Resumindo:
Os parênteses () são usados para conter os argumentos passados para funções ou métodos.
Os colchetes [] são usados para acessar elementos de matrizes (arrays).
As chaves { } são usadas para conter múltiplas instruções. Com o uso de chaves é possÃvel colocar várias instruções dentro de uma única funçõa ou fluxo de código.
Isso são vertentes de uso de expressões para montar um código ou efetuar processos matemáticos dentro dos compiladores para cada linguagem tem um significado similar e muito semelhante mas nunca igual.
Acredito que viram em meu simples projeto que passei, ambos os parametros do Objeto Label e Variável do tipo VARIANT valores como NULL, [Ô][Ô], EMPTY, NOTHING que matematicamente são diferentes e cada um tem um uso especÃfico que apesar do exemplo simples o resultado foi igual e/ou identico.
Tem muita coisa que se analisarmos com um pouco de critério verá semelhanças entre VB, VB.Net, C#, J#, F#, C, C++, ASM, JAVA2EE, COBOL, PASCAL, BASIC, FORTRAN, etc....
Temos ainda aspas simples, aspas duplas, interrogação, dolar, asterisco, entre outros simbolos que nacesceram dessas linguagens e estão esquecidas por causa da melhoria da forma de utilizar as instruções para escrever código.
Boa Sorte.
Engraçado, aplicando os parenteses o erro aparece.
Tópico encerrado , respostas não são mais permitidas