Programación General > Visual Basic 6.0 e inferiores

 Evaluar Formula Que Esta En Fichero Texto

(1/2) > >>

sirespi:
Muy buenas a todos de nuevo.

Ante todo saludos,hace mucho qeu no estaba por aqui y recuerdo este foro con mucho gusto ya que me ayudaron un monton con el PFC. Resulta que he retomado el proyecto para mejorarlo y ahora eh vuelto con VB y con mis dudas. A ver si me podeis echar una manita.

Resulta que quiero hacer una especie de editor de ecuaciones. Lo que quiero es un formulario que me guarde la ecuacion que yo escribo en un archivo de tecto. Eso esta hecho y es facil. Pero luego quiero que otro formulario me muestre en pantalla el resultado de esa formula que esta en un archivo de texto. Os pongo el codigo que he hecho

Private Sub Form_Load()
Dim A As Integer
Dim B As Integer
Dim variable As Integer
A = 2
B = 3
Open App.Path & "\" & "ecuacion.txt" For Input As #1
Input #1, variable
Close (1)
Text1.Text = variable
End Sub

El archivo ecuacion.txt solo tiene una linea, y pone A*B, ya esta.

El archivo lo abre bien, pero en lugar de mostrarme en el texto el valor 6 que es lo que espero, me saca un cero, es decir, no evala la expresion. Se que me falta algo en algun lado.

Alguno me puede hechar una manilla????

Un saludo y muchas gracias.

Shiquilla:

--- Código: Text ---Option Explicit Private Sub Form_Load()Dim A As IntegerDim B As IntegerDim variable As StringA = 2B = 3Open App.Path & "\" & "ecuacion.txt" For Input As #1    Input #1, variableClose (1)msRealizarOperacion variable, A, BEnd Sub Private Sub msRealizarOperacion(lsOperacion As String, A As Integer, B As Integer)Dim lnOperacion As LongDim lsLetra As String        lsLetra = Mid(lsOperacion, 1, 1)    lnOperacion = mfnOperacion(lsOperacion)    If lsLetra = "A" Then 'A*B        Select Case lnOperacion            Case 1 'Multiplicar                Text1.Text = A * B            Case 2 'Dividir                Text1.Text = A / B        End Select    Else 'B*A        Select Case lnOperacion            Case 1 'Multiplicar                Text1.Text = B * A            Case 2 'Dividir                Text1.Text = B / A        End Select    End IfEnd Sub Private Function mfnOperacion(lsOperacion As String)    If InStr(1, lsOperacion, "*") Then 'Multiplicar        mfnOperacion = 1    ElseIf InStr(1, lsOperacion, "/") Then 'Dividir        mfnOperacion = 2    End IfEnd Function 

No se me ocurre hacerlo de otra forma aunque esto es sólo un ejemplo...

Saludos,

sirespi:
Muchas gracias Shiquilla.

el ejemplo esta muy bien, el problema es que la funcion que tu has creado esta pensada sabiendo lo que pone en el fichero de texto. Mi codigo era un solo ejemplo, se supone que cuando estoy en la parte de crear la formula, el usuario pone la formula que le da la gana, siempre que 4 o 5 variables fijas, pero la formula que quiere, puede poner una multiplicacion, un logaritmo neperiano, una permutacion, vete tu a saber.

Entonces el problema que yo veo e sque este ejemplo vale solo si sabes la ecuacion que va a poner el usuaio.

Es decir, lo que no se es porque  si yo pongo esto por codigo

A=3
B=7
text1.text =(a+2)*b/(20^a)

esto si me lo hace, y me muestra un resultado pero cuando pongo el tocho de (a+2)*b/(20^a) lo meto en una variable que lo recoge de un txt, ejemplo

A=3
B=7
....
...
input #1,var
Close(1)
text1.text=var

porque aqui no lo hace.

Alguna idea??

Shiquilla:
Sé que lo que he hecho es sólo un ejemplo, pero en ese ejemplo ves que no puedes tratar una cadena de texto (sería la operación a realizar) y que se ejecute la operación, porque para VB eso es un String.

Entonces tienes que crearte funciones para desglosar esa cadena de texto, por eso mi ejemplo estaba así.

Es definitiva, si tú pones en código de VB tienes que A=2 y B=3, todas las operaciones que hagas con esas variables si que te las realizará, pero ten en cuenta que para VB lo que estás recuperando (hablando de recuperar la operación de un fichero de texto) es un String.

Saludos,

Jose Arriagada:
Utiliza el control msscript que permite evaluar expresiones matematicas.
Es facil de usar, y de acuerdo a la modalidad que dices operarar (por medio de un archivo donde tienes los valores y la ecuacion), con este control te sera super facil.

Ahi te va un codigo de ejemplo, para que lo estudies y decidas.

Suerte

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa