• Sábado 11 de Mayo de 2024, 19:35

Autor Tema:  Evaluar Formula Que Esta En Fichero Texto  (Leído 2301 veces)

sirespi

  • Miembro activo
  • **
  • Mensajes: 64
    • Ver Perfil
Evaluar Formula Que Esta En Fichero Texto
« en: Jueves 14 de Julio de 2005, 11:01 »
0
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

  • Miembro MUY activo
  • ***
  • Mensajes: 188
  • Nacionalidad: es
    • Ver Perfil
    • http://www.songesoft.com
Re: Evaluar Formula Que Esta En Fichero Texto
« Respuesta #1 en: Jueves 14 de Julio de 2005, 12:03 »
0
Código: Text
  1. Option Explicit
  2.  
  3. Private Sub Form_Load()
  4. Dim A As Integer
  5. Dim B As Integer
  6. Dim variable As String
  7. A = 2
  8. B = 3
  9. Open App.Path & "\" & "ecuacion.txt" For Input As #1
  10.     Input #1, variable
  11. Close (1)
  12. msRealizarOperacion variable, A, B
  13. End Sub
  14.  
  15. Private Sub msRealizarOperacion(lsOperacion As String, A As Integer, B As Integer)
  16. Dim lnOperacion As Long
  17. Dim lsLetra As String
  18.    
  19.     lsLetra = Mid(lsOperacion, 1, 1)
  20.     lnOperacion = mfnOperacion(lsOperacion)
  21.     If lsLetra = "A" Then 'A*B
  22.         Select Case lnOperacion
  23.             Case 1 'Multiplicar
  24.                 Text1.Text = A * B
  25.             Case 2 'Dividir
  26.                 Text1.Text = A / B
  27.         End Select
  28.     Else 'B*A
  29.         Select Case lnOperacion
  30.             Case 1 'Multiplicar
  31.                 Text1.Text = B * A
  32.             Case 2 'Dividir
  33.                 Text1.Text = B / A
  34.         End Select
  35.     End If
  36. End Sub
  37.  
  38. Private Function mfnOperacion(lsOperacion As String)
  39.     If InStr(1, lsOperacion, "*") Then 'Multiplicar
  40.         mfnOperacion = 1
  41.     ElseIf InStr(1, lsOperacion, "/") Then 'Dividir
  42.         mfnOperacion = 2
  43.     End If
  44. End Function
  45.  


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

Saludos,
« §hÿqµïllæ »

sirespi

  • Miembro activo
  • **
  • Mensajes: 64
    • Ver Perfil
Re: Evaluar Formula Que Esta En Fichero Texto
« Respuesta #2 en: Jueves 14 de Julio de 2005, 12:43 »
0
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

  • Miembro MUY activo
  • ***
  • Mensajes: 188
  • Nacionalidad: es
    • Ver Perfil
    • http://www.songesoft.com
Re: Evaluar Formula Que Esta En Fichero Texto
« Respuesta #3 en: Viernes 15 de Julio de 2005, 08:01 »
0
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,
« §hÿqµïllæ »

Jose Arriagada

  • Miembro MUY activo
  • ***
  • Mensajes: 373
    • Ver Perfil
Re: Evaluar Formula Que Esta En Fichero Texto
« Respuesta #4 en: Miércoles 20 de Julio de 2005, 22:02 »
0
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
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.

sirespi

  • Miembro activo
  • **
  • Mensajes: 64
    • Ver Perfil
Re: Evaluar Formula Que Esta En Fichero Texto
« Respuesta #5 en: Jueves 21 de Julio de 2005, 13:27 »
0
Pues no habia pensado en esto, mas que nada ni sabia que existiera esto. He hecho como me dijeron, me he creado un pedazo de codigo de la leche par que vaya leyendo la ecuacion, y diferenciando (, *, +, -  y que operaciones se ahcen primeor etc etc. La verdad es qeu si no llega a ser por algun codigo que he visto por internet en alguans paginas me vuelvo loco.

Pero bueno, ya esta hecho y funciona, asi que ahora que tengo lo que queria, puedo probar esto con tranquilidad

Muchas gracias por al ayuda.