Array
(
)

Como transformar uma string quot; quot; em operador

Ciniro
   - 02 abr 2007

A função é simples.
Preciso pegar o operador que está no forma de string e com ele fazer o calculo proposto. Alguem saberia.

Private Sub Command1_Click()

Dim res As String
Dim a As Double

res = ´3+3´
a = CInt(res) ´O VALOR EM FORMA DE STRING TEM QUE SER SOMADO E ATRIBUIDO

MsgBox (Str(a))

End Sub

---------------------------------------------
Se eu passar ´-´ e fizer

dim numero as integer
numero = 3 & ´-´ & 6

o valor de numero tem quer ser 9, por exemplo.

SOCORRO!!! Tenho que ter isso aqui prontinho rapido.

Cleyton.bruno
   - 03 abr 2007

Não sei se é a melhor solução mas sei que funciona

Dim strAux As String = ´3+6´
Dim intNum1 As Integer
Dim intNum2 As Integer
Dim intRes As Integer
Dim intAux As Integer
For intAux = 0 To strAux.Length - 1
If Not (Asc(strAux.Chars(intAux)) > 47 And Asc(strAux.Chars(intAux)) < 58) Then
intNum1 = CInt(strAux.Substring(0, intAux))
intNum2 = CInt(strAux.Substring(intAux + 1, strAux.Length - (intAux + 1)))
Select Case strAux.Chars(intAux)
Case ´+´
intRes = intNum1 + intNum2
Case ´-´
intRes = intNum1 - intNum2
Case ´/´
intRes = intNum1 / intNum2
Case ´*´
intRes = intNum1 * intNum2
End Select
Exit For
End If
Next intAux

No final deste código o resultado vai estar em intRes

Carlosrodrigop
   - 03 abr 2007

certeza que só ira acontecer operações simples como
x + y
x - y
x / y
x * y
x ^y

?????

Ciniro
   - 03 abr 2007

AI pessoal agradeço a todos pelas respostas. Mas assim... não posso usar um CASE. É uma calculadora mesmo. Só com as operações básicas.
Mas tem de converter o sinal matematico que o cara escolher de string para, o real operador que tem no VB.

Por exemplo:

se ele selecionar ´+´ ou ´-´ ou ´*´ e ai vai..... junto com os dois numeros (em forma de string) escolhidos, ele tem que realizar a operação e lançar isso dentro de uma variável.

A lógica é simples. To garrado é na sintaxe.... pelo menos é uma coisa curiosa.
Alguém mata essa?

Cleyton.bruno
   - 04 abr 2007

Então sem case fica tipo assim:

Dim strAux As String = ´3+6´
Dim intNum1 As Integer
Dim intNum2 As Integer
Dim intRes As Integer
Dim intAux As Integer
For intAux = 0 To strAux.Length - 1
If Not (Asc(strAux.Chars(intAux)) > 47 And Asc(strAux.Chars(intAux)) < 5Cool Then
intNum1 = CInt(strAux.Substring(0, intAux))
intNum2 = CInt(strAux.Substring(intAux + 1, strAux.Length - (intAux + 1)))
if (strAux.Chars(intAux) = ´+´) then
intRes = intNum1 + intNum2
elseif (strAux.Chars(intAux) = ´-´) then
intRes = intNum1 - intNum2
elseif (strAux.Chars(intAux) = ´/´) then
intRes = intNum1 / intNum2
elseif (strAux.Chars(intAux) = ´*´) then
intRes = intNum1 * intNum2
End if
Exit For
End If
Next intAux

Cleyton.bruno
   - 04 abr 2007

Eu acho que não tem como ´converter´ o caractere que o cara digita em sinal matemático, o que você pode fazer(e é o que eu fiz) é verificar qual caractere que ele digitou e fazer a operação relacionada a esse caractere.