Programación General > Visual Basic 6.0 e inferiores
Evaluar Formula Que Esta En Fichero Texto
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
[#] Página Siguiente
Ir a la versión completa