ESTRANHO
Olá
Tenho o código seguinte:
Private Sub Command2_Click()
Text1.Text = [Ô]5*Sqr(3)/2+5/2[Ô]
parte = Split(Text1, [Ô]+[Ô])
a = Val(parte(0))
b = Val(parte(1))
Label1 = parte(0)
Label2 = parte(1)
Label3 = a
Label4 = b
Label5 = a ^ 2
Label6 = b ^ 2
end sub
Os label são apenas para verificar os valores e prosseguir o trabalho que dá errado.
Vem
label1 e label2 correctos
label3=5 e deveria ser 5*sqr(3)/2
label4=5 e deveria ser 5/2
label5=25 e deveria ser 75/4
label6=25 e deveria ser 25/4
Onde estará o erro?
Agradeço desde já as repostas.
Tenho o código seguinte:
Private Sub Command2_Click()
Text1.Text = [Ô]5*Sqr(3)/2+5/2[Ô]
parte = Split(Text1, [Ô]+[Ô])
a = Val(parte(0))
b = Val(parte(1))
Label1 = parte(0)
Label2 = parte(1)
Label3 = a
Label4 = b
Label5 = a ^ 2
Label6 = b ^ 2
end sub
Os label são apenas para verificar os valores e prosseguir o trabalho que dá errado.
Vem
label1 e label2 correctos
label3=5 e deveria ser 5*sqr(3)/2
label4=5 e deveria ser 5/2
label5=25 e deveria ser 75/4
label6=25 e deveria ser 25/4
Onde estará o erro?
Agradeço desde já as repostas.
Fera,
Na Label3 e Label4 não saiu a expressão matematica porque voce colocou a = Val(parte(0)) b = Val(parte(1)).
Certo para aparecer seria sem o Val.
E na Label5 e Label6 voce não vai conseguir passar uma expressão matemática em uma variável e conseguir executar isso.
Não sei qual o objetivo disso mais seria.
Label5 = (5*Sqr(3)/2) ^ 2
Label6 = (5/2) ^ 2
Sei la ou mais ou menos assim..
Na Label3 e Label4 não saiu a expressão matematica porque voce colocou a = Val(parte(0)) b = Val(parte(1)).
Certo para aparecer seria sem o Val.
E na Label5 e Label6 voce não vai conseguir passar uma expressão matemática em uma variável e conseguir executar isso.
Não sei qual o objetivo disso mais seria.
Label5 = (5*Sqr(3)/2) ^ 2
Label6 = (5/2) ^ 2
Sei la ou mais ou menos assim..
Eu coloco
a = Val(parte(0))
b = Val(parte(1))
porque para fazer cálculos, tenho de ter valores e não strings.
E eu quero que nas label 5 e 6 saiam os valores numéricos resultado das operações.
a = Val(parte(0))
b = Val(parte(1))
porque para fazer cálculos, tenho de ter valores e não strings.
E eu quero que nas label 5 e 6 saiam os valores numéricos resultado das operações.
Conteúdo do texto = 5*Sqr(3)/2+5/2
split ta dividindo o texto pelo delimitador [Ô]+[Ô]
Ãndice 0 da array: 5*Sqr(3)/2
Ãndice 1 da array: 5/2
e vc ta dando VAL no indice 0
não tem como usar VAL em [Ô]5*Sqr(3)/2[Ô] pois o indice 0 se transformou em String
use option explicit
declare as variaveis e vc verá os erros
e terá que programar mais que isso pra fazer um leitor de expressão numerica
split ta dividindo o texto pelo delimitador [Ô]+[Ô]
Ãndice 0 da array: 5*Sqr(3)/2
Ãndice 1 da array: 5/2
e vc ta dando VAL no indice 0
não tem como usar VAL em [Ô]5*Sqr(3)/2[Ô] pois o indice 0 se transformou em String
use option explicit
declare as variaveis e vc verá os erros
e terá que programar mais que isso pra fazer um leitor de expressão numerica
[Ô]não tem como usar VAL em [Ô]5*Sqr(3)/2[Ô] pois o indice 0 se transformou em String[Ô]
Mas é precisamente por se ter transformado em string que tenho de usar Val.
Mas é precisamente por se ter transformado em string que tenho de usar Val.
vc ta equivocado com VAL. aà tem caracteres A-Z dentro desse indice. VAL é só pra STRINGS com NUMEROS. não funciona de A a Z.
exemplo quando funciona:
Dim Texto as string
Dim Texto2 as string
Dim Resultado As Long
Texto = [Ô]345[Ô]
Texto2 = [Ô]22[Ô]
Resultado = Val(Texto) + Val(Texto2)
Exemplo quando não funciona:
Dim Texto as string
Dim Texto2 as string
Dim Resultado As Long
Texto = [Ô]eu sou doido 10 vezes[Ô]
Texto2 = [Ô]50[Ô]
Resultado = Val(Texto) + Val(Texto2)
como vai somar que sou doido 10 vezes + 50 usando VAL????
exemplo quando funciona:
Dim Texto as string
Dim Texto2 as string
Dim Resultado As Long
Texto = [Ô]345[Ô]
Texto2 = [Ô]22[Ô]
Resultado = Val(Texto) + Val(Texto2)
Exemplo quando não funciona:
Dim Texto as string
Dim Texto2 as string
Dim Resultado As Long
Texto = [Ô]eu sou doido 10 vezes[Ô]
Texto2 = [Ô]50[Ô]
Resultado = Val(Texto) + Val(Texto2)
como vai somar que sou doido 10 vezes + 50 usando VAL????
Eu compreendo o que diz mas não concordo.
Esse exemplo é com uma string literal e outra com um valor numérico.
Nas minhas são ambas valores numéricos.
De qualquer modo, muitÃssimo obrigado.
Eu tenho uma norma: quando não consigo resolver uma questão, contorno-a e tento resolvê-la de uma forma completamente diferente.
Foi o que fiz e já solucionei o problema.
Mais uma vez, obrigado pela ajuda.
Esse exemplo é com uma string literal e outra com um valor numérico.
Nas minhas são ambas valores numéricos.
De qualquer modo, muitÃssimo obrigado.
Eu tenho uma norma: quando não consigo resolver uma questão, contorno-a e tento resolvê-la de uma forma completamente diferente.
Foi o que fiz e já solucionei o problema.
Mais uma vez, obrigado pela ajuda.
se eu fosse vc faria assim
Criava uma variavel array contendo a lista de todos os eperadores matematicos ex: Sqr + - * / ^ ......
usaria split pra dividir toda a expressão numerica com os operadores
criar rotina pra cada tipo de operação matematica
e a sequencia de prioridades para calculos dos valores coletados nos primeiros indices que ficam entre () [] {}
e aà vc cria todas as rotinas necessarias pra esse loop
teoricamente parece facil mas na pratica vai ficar uns bons dias programando
Criava uma variavel array contendo a lista de todos os eperadores matematicos ex: Sqr + - * / ^ ......
usaria split pra dividir toda a expressão numerica com os operadores
criar rotina pra cada tipo de operação matematica
e a sequencia de prioridades para calculos dos valores coletados nos primeiros indices que ficam entre () [] {}
e aà vc cria todas as rotinas necessarias pra esse loop
teoricamente parece facil mas na pratica vai ficar uns bons dias programando
Tópico encerrado , respostas não são mais permitidas