Consulta de código implementado en visual basic con error en archivo dll

Tengo es te dll:
Function rposi(n As Double) As Double
'////////////////////////////////////////
Dim aux As Double
Dim d1 As Double
Dim a1 As Double
Dim b1 As Double
Dim c1 As Double
Dim r As Double
'////////////////////////////////////////
On Error GoTo manejador_errores
a1 = avar
b1 = bvar
c1 = cvar4
aux = CInt(b1 ^ 2 - 4 * a1 * c1)
d1 = Math.Sqr(aux)
r = -(b1) + d1
If aux > 0 Then
n = r / (2 * a1)
rposi = n
Else
If aux = 0 Then
n = -(b1) / (2 * a1)
rposi = n
End If
End If
Exit Function
manejador_errores:
If Err.Number = 5 Then
MsgBox ("b no puede ser menor que a y c si A y C son negativos")
Resume Next
End If
End Function
Function rneg(n1 As Double) As Double
'////////////////////////////////////////
Dim aux2 As Double
Dim d2 As Double
Dim a2 As Double
Dim b2 As Double
Dim c2 As Double
Dim r2 As Double
'////////////////////////////////////////
On Error GoTo manejador_errores
a2 = a
b2 = b
c2 = c
aux2 = CInt(b2 ^ 2 - 4 * a2 * c2)
d2 = Math.Sqr(aux2)
r2 = -(b2) - (d2)
If aux2 > 0 Then
n1 = r2 / (2 * a2)
X2.Text = n1
Else
If aux2 = 0 Then
n1 = -(b2) / (2 * a2)
X2.Text = n1
End If
End If
Exit Function
manejador_errores:
If Err.Number = 5 Then
MsgBox ("b no puede ser menor que a y c si A y C son negativos")
Resume Next
End If
End Function
Y tengo una forma que llama al dll, el problema es que, llama al la función rposi y rneg que calculan la raíz cuadrática de una ecuación lo que no se es como hacer que el dll lea las variables que se introducen es esta forma:
Dim objeto As HIM_O.HIM
Private Sub botonx1_Click()
x1 = objeto.rposi(avar, bvar, cvar4)
End Sub
Private Sub Form_Load()
Set objeto = New HIM_O.HIM
End Sub
Private Sub limpiar4_Click()
x1.Text = ""
x2.Text = ""
avar.Text = ""
bvar.Text = ""
cvar4.Text = ""
End Sub
Private Sub salir4_Click()
Unload Me
End Sub
Private Sub x2_4_Click()
x2 = objeto.rneg(avar, bvar, cvar4)
End Sub
lo que yo hice fue que en el dll puse que a1= avar
b1=bvar y c1= cvar4 pero no me corre porque no lee las variables a
Ayudame por favor

1 respuesta

Respuesta
1
Estoy por aquí después de un periodo largo de vacaciones y me he parado a echar un vistazo por el tablón publico y he visto que tienes un pequeño problemilla de concepto.
Tu llamada es correcta, e incorrecta a la vez es correcta si la función esperase lo que tu deseas que espere pero el problema es que las funciones de la dll no esta preparada para recibir esos parámetros que le pasas
Debieras indicarle algo así.
Function rposi(n As Double, avar as double, bvar as double, cvar4 as double) As Double
no me he metido a ver mas el codigo y no se para que utilizas n y ect tampoco me voy aponer ya que tu problema se resolvera asi para que una funcion recupere una variable si esta ubicada en una dll has de pasarle el valor ya sea por referencia o por valor. realiza los cambios de referencia en tus funciones de la dll. Salu2

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas