DESCARGA SOFTWARE PARA FACTURA ELECTRONICA DE AQUI.
Facturacion, Validacion, Addendas, Librerias de programacion, etc.
CARTA PORTE V3.1
ECODEX TIENE ESTOS NUEVOS DATOS DE CONTACTO :
Comercializacion y Ventas - Evelia Vicke evicke@ecodex.com.mx 33-16-03-03-48
Soporte - Humberto Guerrero soporte@ecodex.com.mx 33-34-90-46-03
.
DLL Contabilidad Electrónica y NET
-
- Mensajes: 56
- Registrado: Mar Feb 01, 2011 8:09 pm
DLL Contabilidad Electrónica y NET
Hola compañeros, estoy haciendo algunas pruebas de integración con la DLL que DADO ofrece en esta página para el tema de la Contabilidad Electrónica, y me aparece un error y no he podido identificar el motivo, igual y no la estoy invocando correctamente. Les comparto el código que hice para efectos de prueba. Estoy utilizando VB 2013.
Imports System.Runtime.InteropServices
Public Class Form1
<DllImport("CELib.dll")> _
Public Shared Function Balanza(ByVal IniFileName As String, ByVal TError As Byte)
End Function
<DllImport("CELib.dll")> _
Public Shared Function Catalogo(ByVal IniFileName As String, ByVal TError As Byte)
End Function
<DllImport("CELib.dll")> _
Public Shared Function Polizas(ByVal IniFileName As String, ByVal TError As Byte)
End Function
<DllImport("CELib.dll")> _
Public Shared Function CFDLibVersion() As String
End Function
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim origen = "C:\XSA\CONTABILIDAD\ORIGEN_INI\Ejemplo Balanza.ini"
Balanza(origen, 0)
End Sub
End Class
En la línea donde llamo la función y envío los parámetros "Balanza(origen, 0)" me arroja un error:
Excepción no controlada del tipo 'System.Runtime.InteropServices.MarshalDirectiveException' en WindowsApplication1.exe
Información adicional: Restricción PInvoke: no se pueden devolver variantes.
He buscado información pero no me queda claro el origen del problema, ¿alguien tiene alguna idea? Gracias de antemano
Imports System.Runtime.InteropServices
Public Class Form1
<DllImport("CELib.dll")> _
Public Shared Function Balanza(ByVal IniFileName As String, ByVal TError As Byte)
End Function
<DllImport("CELib.dll")> _
Public Shared Function Catalogo(ByVal IniFileName As String, ByVal TError As Byte)
End Function
<DllImport("CELib.dll")> _
Public Shared Function Polizas(ByVal IniFileName As String, ByVal TError As Byte)
End Function
<DllImport("CELib.dll")> _
Public Shared Function CFDLibVersion() As String
End Function
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim origen = "C:\XSA\CONTABILIDAD\ORIGEN_INI\Ejemplo Balanza.ini"
Balanza(origen, 0)
End Sub
End Class
En la línea donde llamo la función y envío los parámetros "Balanza(origen, 0)" me arroja un error:
Excepción no controlada del tipo 'System.Runtime.InteropServices.MarshalDirectiveException' en WindowsApplication1.exe
Información adicional: Restricción PInvoke: no se pueden devolver variantes.
He buscado información pero no me queda claro el origen del problema, ¿alguien tiene alguna idea? Gracias de antemano
- Dado
- Mensajes: 15922
- Registrado: Mar Jul 06, 2010 7:56 pm
Re: DLL Contabilidad Electrónica y NET
La funcion Balanza LLEVA UN SOLO PARAMETRO
No me hagas mucho caso, pero como el burro que toco la flauta pienso que debes definir asi la funcion :
Private Shared Function Balanza(ByVal IniFileName As String) As Byte
Aunque no estoy seguro, definitivamente NO DEBES LLAMARLO CON DOS PARAMETROS, SOLO CON UNO :
error = Balanza(origen)
Si error = 0 entonces todo bien
No me hagas mucho caso, pero como el burro que toco la flauta pienso que debes definir asi la funcion :
Private Shared Function Balanza(ByVal IniFileName As String) As Byte
Aunque no estoy seguro, definitivamente NO DEBES LLAMARLO CON DOS PARAMETROS, SOLO CON UNO :
error = Balanza(origen)
Si error = 0 entonces todo bien
ADDENDAS? VALIDACION? CODIGO PARA PROGRAMAR TU PROPIA SOLUCION? TODO LO TENEMOS EN WWW.VALIDACFD.COM VISITANOS !!
-
- Mensajes: 56
- Registrado: Mar Feb 01, 2011 8:09 pm
Re: DLL Contabilidad Electrónica y NET
Hola DADO, gracias por el dato, realice la corrección para invocar la DLL, y quedo así:
Public Class Form1
<DllImport("CELib.dll")> _
Public Shared Function Balanza(ByVal IniFileName As String) As Byte
End Function
Y para llamar la función quedo así:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim origen = "C:\XSA\CONTABILIDAD\ORIGEN_INI\Ejemplo_Balanza.ini"
Dim err As Byte
err = Balanza(origen)
If err <> 0 Then
MessageBox.Show("Ha habido un error")
End If
End Sub
Se ejecuta correctamente pero la variable "err" que es valor que me devuelve la función para evaluar el procesamiento me esta dando un valor "3", supongo que es un tipo de error, ¿tu sabes a que se refiera?
Gracias por tu apoyo
Public Class Form1
<DllImport("CELib.dll")> _
Public Shared Function Balanza(ByVal IniFileName As String) As Byte
End Function
Y para llamar la función quedo así:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim origen = "C:\XSA\CONTABILIDAD\ORIGEN_INI\Ejemplo_Balanza.ini"
Dim err As Byte
err = Balanza(origen)
If err <> 0 Then
MessageBox.Show("Ha habido un error")
End If
End Sub
Se ejecuta correctamente pero la variable "err" que es valor que me devuelve la función para evaluar el procesamiento me esta dando un valor "3", supongo que es un tipo de error, ¿tu sabes a que se refiera?
Gracias por tu apoyo
- Dado
- Mensajes: 15922
- Registrado: Mar Jul 06, 2010 7:56 pm
Re: DLL Contabilidad Electrónica y NET
El numero de error no es muy informativo
Ese practicamente sirve solo para ver si es cero o distinto de cero, no mas
Mejor revisa la "bitacora de proceso.txt" para ver los errores, este archivo se graba en c:\ y simultaneamente en %exepath%
Ese practicamente sirve solo para ver si es cero o distinto de cero, no mas
Mejor revisa la "bitacora de proceso.txt" para ver los errores, este archivo se graba en c:\ y simultaneamente en %exepath%
ADDENDAS? VALIDACION? CODIGO PARA PROGRAMAR TU PROPIA SOLUCION? TODO LO TENEMOS EN WWW.VALIDACFD.COM VISITANOS !!
-
- Mensajes: 56
- Registrado: Mar Feb 01, 2011 8:09 pm
Re: DLL Contabilidad Electrónica y NET
Hola DADO, ya verifique el archivo que comentas y solo aparece la línea siguiente por cada vez que he intentado procesar el archivo:
26/ago. 16:39:10 ---Inciando creacion de Balanza---
Comparándola con la de tu demo, pues todo parece ser que no puede cargar el archivo, o no lo encuentra o no pasa correctamente el parámetro. De ahí me surge la duda, la ruta del archivo debe ser la ruta completa me imagino.
Continuare revisando, lo que si es cierto es que ya logre cargar correctamente la DLL y puedo invocar sus funciones, pero no así el parámetro.
Saludos y continuamos investigando
26/ago. 16:39:10 ---Inciando creacion de Balanza---
Comparándola con la de tu demo, pues todo parece ser que no puede cargar el archivo, o no lo encuentra o no pasa correctamente el parámetro. De ahí me surge la duda, la ruta del archivo debe ser la ruta completa me imagino.
Continuare revisando, lo que si es cierto es que ya logre cargar correctamente la DLL y puedo invocar sus funciones, pero no así el parámetro.
Saludos y continuamos investigando
-
- Mensajes: 370
- Registrado: Lun Oct 10, 2011 11:50 am
Re: DLL Contabilidad Electrónica y NET
Te recomiendo estudiar el ejemplo en VB.Net que utiliza la libreria CFDLib.dll (para Facturacion electronica), creo que la definicion y el llamado se parecen a lo de Contabilidad Electronica que utiliza la libreria CELib.dll
Aqui te anexo la clase de ese ejemplo
Aqui te anexo la clase de ese ejemplo
Código: Seleccionar todo
Imports System.Runtime.InteropServices
Imports Microsoft.VisualBasic
Public Class Form1
Private Enum TError As Byte
OK = 0
Arch_No_Encontrado = 1
Dato_Obligatorio = 2
Problemas_Certificado = 3
Vigencia_Certificado = 4
LlavePrivada = 5
Version_CFD_Invalida = 6
ErrorGeneral = 7
End Enum
''' <summary>
''' Esta es la funcion principal, toma un archivo tipo *.ini con la informacion necesaria
''' para crear la factura, si todo sale bien entonces devuelve un "OK", de otra forma devuelve
''' uno de los errores de la tabla TError
''' </summary>
<DllImport("CFDLib.dll", CharSet:=CharSet.Ansi, CallingConvention:=CallingConvention.StdCall)> _
Private Shared Function GeneraCFD(ByVal IniFileName As String, ByVal ClaveLlavePrivada As String) As TError
End Function
''' <summary>
''' Esta es la funcion principal, toma un archivo tipo *.txt con la informacion necesaria
''' para crear la factura, si todo sale bien entonces devuelve un "OK", de otra forma devuelve
''' uno de los errores de la tabla TError. ********Usa formato de IT Complements Forms Appeal*******
''' </summary>
<DllImport("CFDLib.dll", CharSet:=CharSet.Ansi, CallingConvention:=CallingConvention.StdCall)> _
Private Shared Function GeneraCFD2(ByVal IniFileName As String, ByVal ClaveLlavePrivada As String) As TError
End Function
''' <summary>
''' Funcion para generar el Timbrefiscal, hay que definir en el archivo ini el nombre del PAC
''' y la seccion especial correspondiente al PAC seleccionado, el resultado es el mismo XML
''' pero ya con el timbre insertado
''' </summary>
<DllImport("CFDLib.dll", CharSet:=CharSet.Ansi, CallingConvention:=CallingConvention.StdCall)> _
Private Shared Function TimbrarCFD(ByVal IniFileName As String) As TError
End Function
''' <summary>
''' Funcion para cancelar un CFDI, toma como parametro el nombre de un archivo
''' con extension ini en donde vienen los datos necesarios para la cancelacion/
''' </summary>
<DllImport("CFDLib.dll", CharSet:=CharSet.Ansi, CallingConvention:=CallingConvention.StdCall)> _
Private Shared Function CancelarCFD(ByVal IniFileName As String) As TError
End Function
''' <summary>
''' Funcion para Recuperar el Acuse de Cancelacion que emite el SAT, toma como parametro
''' el nombre de un archivo con extension ini en donde vienen los datos necesarios
''' </summary>
<DllImport("CFDLib.dll", CharSet:=CharSet.Ansi, CallingConvention:=CallingConvention.StdCall)> _
Private Shared Function RecuperaAcuseCancelacion(ByVal IniFileName As String) As TError
End Function
''' <summary>
''' Funcion para consultar el saldo de los timbres, el resultado se graba en el mismo archivo ini
''' </summary>
<DllImport("CFDLib.dll", CharSet:=CharSet.Ansi, CallingConvention:=CallingConvention.StdCall)> _
Private Shared Function ConsultaSaldo(ByVal IniFileName As String) As TError
End Function
''' <summary>
''' Funcion para recuperar un CFDI previamente emitido
''' </summary>
<DllImport("CFDLib.dll", CharSet:=CharSet.Ansi, CallingConvention:=CallingConvention.StdCall)> _
Private Shared Function RecuperarCFD(ByVal IniFileName As String) As TError
End Function
''' <summary>
''' PruebaClaveDeLlavePrivada es util para los menus de configuracion, en ese tipo de menus
''' se puede pedir la Clave de la Llave Privada y asegurarse que es la correcta sin necesidad
''' de crear una factura, ya cuando se asegure de que es correcta la clave puede ser grabada
''' para no tener que estarla pidiendo cada vez que se requiera elaborar un CFD
''' </summary>
<DllImport("CFDLib.dll", CharSet:=CharSet.Ansi, CallingConvention:=CallingConvention.StdCall)> _
Private Shared Function PruebaClaveDeLlavePrivada(ByVal IniFileName As String, ByVal ClaveLlavePrivada As String) As Byte
End Function
''' <summary>
''' Funcion que regresa la version de la libreria
''' </summary>
<DllImport("CFDLib.dll", CharSet:=CharSet.Ansi, CallingConvention:=CallingConvention.StdCall)> _
Private Shared Function CFDLibVersion() As String
End Function
''' <summary>
''' La siguiente funcion regresa la Cadena Original y el Sello Digital que se uso para sellar la
'''factura, es necesaria para poder programar la representacion impresa (el PDF)
''' </summary>
<DllImport("CFDLib.dll", CharSet:=CharSet.Ansi, CallingConvention:=CallingConvention.StdCall)> _
Private Shared Function CadenaOriginal() As String
End Function
''' <summary>
''' La siguiente funcion regresa la Cadena Original y el Sello Digital que se uso para sellar la
''' factura, es necesaria para poder programar la representacion impresa (el PDF)
''' </summary>
<DllImport("CFDLib.dll", CharSet:=CharSet.Ansi, CallingConvention:=CallingConvention.StdCall)> _
Private Shared Function SelloDigital() As String
End Function
''' <summary>
''' Si la funcion GeneraCFD no puede crear el CFD devuelve un numero entero -
''' con el error, la funcion GetError devuelve una cadena que explica ese error
''' </summary>
<DllImport("CFDLib.dll", CharSet:=CharSet.Ansi, CallingConvention:=CallingConvention.StdCall)> _
Private Shared Function GetError() As String
End Function
''' <summary>
''' GetErrorExt es una cadena adicional al error que indica con mas detalle en donde
''' ocurrio el error, por ejemplo, GetError puede devolver "Archivo no encontrado"
''' y GetErrorExt devuelve el *nombre* del archivo que no fue encontrado
''' </summary>
<DllImport("CFDLib.dll", CharSet:=CharSet.Ansi, CallingConvention:=CallingConvention.StdCall)> _
Private Shared Function GetErrorExt() As String
End Function
Private Sub CrearCFDIClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CrearCFDI.Click
OpenDialog.Title = "CARGAR ARCHIVO INI PARA CONVERTIR A FACTURA"
OpenDialog.DefaultExt = "ini"
OpenDialog.Filter = "Archivo INI (*.ini)|*.ini"
If OpenDialog.ShowDialog() = DialogResult.OK Then
Dim clave As String = Interaction.InputBox("Introduzca la clave de la Llave Privada", "", "12345678a", -1, -1)
Dim err As TError = GeneraCFD(OpenDialog.FileName, clave)
If err = TError.OK Then
Dim cadenaOriginalString As String = CadenaOriginal()
If cadenaOriginalString.Length > 50 Then
cadenaOriginalString = cadenaOriginalString.Substring(0, 50)
End If
Dim selloDigitalString As String = SelloDigital()
If selloDigitalString.Length > 50 Then
selloDigitalString = selloDigitalString.Substring(0, 50)
End If
MessageBox.Show("Se grabo la factura en formato XML" & vbCrLf & vbCrLf & "La Cadena Original y el Sello Digital son" & vbCrLf & vbCrLf & cadenaOriginalString & "..." & vbCr & vbLf & vbCr & vbLf & selloDigitalString & "...", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information)
Else
MessageBox.Show("Hubo un Error" & vbCrLf & GetError() & vbCrLf & GetErrorExt(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
End If
End If
End Sub
Private Sub TimbradoClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timbrado.Click
OpenDialog.Title = "CARGAR INI CON LA CONFIGURACION PARA TIMBRADO"
OpenDialog.DefaultExt = "ini"
OpenDialog.Filter = "Archivo INI (*.ini)|*.ini"
If OpenDialog.ShowDialog() = DialogResult.OK Then
Dim err As TError = TimbrarCFD(OpenDialog.FileName)
If err = TError.OK Then
MessageBox.Show("TIMBRADO EXITOSO!!" & vbCr & vbLf & "Ahora el XML ya contiene un timbre", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information)
Else
MessageBox.Show("Hubo un Error" & vbCr & vbLf & GetError() & vbCr & vbLf & GetErrorExt(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
End If
End If
End Sub
Private Sub CancelacionClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cancelacion.Click
OpenDialog.Title = "CARGAR INI CON LA CONFIGURACION PARA CANCELAR UN CFDI"
OpenDialog.DefaultExt = "ini"
OpenDialog.Filter = "Archivo INI (*.ini)|*.ini"
If OpenDialog.ShowDialog() = DialogResult.OK Then
Dim err As TError = CancelarCFD(OpenDialog.FileName)
If err = TError.OK Then
MessageBox.Show("EL CFDI FUE CANCELADO", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information)
Else
MessageBox.Show("Hubo un Error" & vbCrLf & GetError() & vbCrLf & GetErrorExt(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
End If
End If
End Sub
Private Sub RecuperaAcuseClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RecuperaAcuse.Click
OpenDialog.Title = "CARGAR INI CON LA CONFIGURACION PARA RECUPERAR EL ACUSE DE CANCELACION"
OpenDialog.DefaultExt = "ini"
OpenDialog.Filter = "Archivo INI (*.ini)|*.ini"
If OpenDialog.ShowDialog() = DialogResult.OK Then
Dim err As TError = RecuperaAcuseCancelacion(OpenDialog.FileName)
If err = TError.OK Then
MessageBox.Show("EL ACUSE FUE RECIBIDO Y SE GRABO EN DISCO", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information)
Else
MessageBox.Show("Hubo un Error" & vbCrLf & GetError() & vbCrLf & GetErrorExt(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
End If
End If
End Sub
Private Sub SaldoClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Saldo.Click
OpenDialog.Title = "CARGAR INI CON LA CONFIGURACION PARA CONSULTAR SALDO"
OpenDialog.DefaultExt = "ini"
OpenDialog.Filter = "Archivo INI (*.ini)|*.ini"
If OpenDialog.ShowDialog() = DialogResult.OK Then
Dim err As TError = ConsultaSaldo(OpenDialog.FileName)
If err = TError.OK Then
MessageBox.Show("EL SALDO DE TIMBRES SE GRABO EN EL ARCHIVO INI", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information)
Else
MessageBox.Show("Hubo un Error" & vbCrLf & GetError() & vbCrLf & GetErrorExt(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
End If
End If
End Sub
Private Sub RecuperarCFDIClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RecuperarCFDI.Click
OpenDialog.Title = "CARGAR INI CON LA CONFIGURACION PARA RECUPERAR UN CFDI"
OpenDialog.DefaultExt = "ini"
OpenDialog.Filter = "Archivo INI (*.ini)|*.ini"
If OpenDialog.ShowDialog() = DialogResult.OK Then
Dim err As TError = RecuperarCFD(OpenDialog.FileName)
If err = TError.OK Then
MessageBox.Show("EL XML SE GRABO EN DISCO", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information)
Else
MessageBox.Show("Hubo un Error" & vbCrLf & GetError() & vbCrLf & GetErrorExt(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
End If
End If
End Sub
Private Sub VersionClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Version.Click
MessageBox.Show("Version de la libreria : " & CFDLibVersion(), "Information", MessageBoxButtons.OK, MessageBoxIcon.Information)
End Sub
Private Sub PruebaLlaveClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PruebaLlave.Click
OpenDialog.Title = "CARGAR LLAVE PRIVADA PARA PROBAR LA CLAVE"
OpenDialog.DefaultExt = "key"
OpenDialog.Filter = "Llave Privada (*.key)|*.key"
If OpenDialog.ShowDialog() = DialogResult.OK Then
Dim clave As String = Interaction.InputBox("Introduzca la clave de la Llave Privada", "", "12345678a", -1, -1)
Dim b As Byte = PruebaClaveDeLlavePrivada(OpenDialog.FileName, clave)
If b <> 0 Then
MessageBox.Show("La clave es correcta", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information)
Else
MessageBox.Show("La clave NO es correcta", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
End If
End Sub
Private Sub FormsAppealClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FormsAppeal.Click
OpenDialog.Title = "CARGAR ARCHIVO TXT PARA CONVERTIR A FACTURA"
OpenDialog.DefaultExt = "txt"
OpenDialog.Filter = "Archivo TXT (*.txt)|*.txt"
If OpenDialog.ShowDialog() = DialogResult.OK Then
Dim clave As String = Interaction.InputBox("Introduzca la clave de la Llave Privada", "", "12345678a", -1, -1)
Dim err As TError = GeneraCFD2(OpenDialog.FileName, clave)
If err = TError.OK Then
Dim cadenaOriginalString As String = CadenaOriginal()
If cadenaOriginalString.Length > 50 Then
cadenaOriginalString = cadenaOriginalString.Substring(0, 50)
End If
Dim selloDigitalString As String = SelloDigital()
If selloDigitalString.Length > 50 Then
selloDigitalString = selloDigitalString.Substring(0, 50)
End If
MessageBox.Show("Se grabo la factura en formato XML" & vbCrLf & vbCrLf & "La Cadena Original y el Sello Digital son" & vbCrLf & vbCrLf & cadenaOriginalString & "..." & vbCrLf & vbCrLf & selloDigitalString & "...", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information)
Else
MessageBox.Show("Hubo un Error" & vbCrLf & GetError() & vbCrLf & GetErrorExt(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
End If
End If
End Sub
End Class
-
- Mensajes: 56
- Registrado: Mar Feb 01, 2011 8:09 pm
Re: DLL Contabilidad Electrónica y NET
Gracias jggtz
Con las observaciones que me comentaste ajuste el código, mas o menos era lo mismo pero en sucio, ya que apenas estoy probando la DLL, en fin, el código quedo así:
Pero lamentablemente me sigue arrojando el error 3, y no carga el archivo ini para procesarlo ¿alguien ya la ha probado la DLL en sus desarrollos?
Continuamos investigando, saludos
Con las observaciones que me comentaste ajuste el código, mas o menos era lo mismo pero en sucio, ya que apenas estoy probando la DLL, en fin, el código quedo así:
Código: Seleccionar todo
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Err As Byte
OpenFileDialog1.Title = "CARGAR INI PARA LA BALANZA DE COMPROBACIÓN"
OpenFileDialog1.DefaultExt = "ini"
OpenFileDialog1.Filter = "Archivo INI (*.ini)|*.ini"
If OpenFileDialog1.ShowDialog() = DialogResult.OK Then
Err = Balanza(OpenFileDialog1.FileName)
If Err = 0 Then
MessageBox.Show("GENERACION CORRECTA", "CORRECTO", MessageBoxButtons.OK, MessageBoxIcon.None)
Else
MessageBox.Show("HUBO UN ERROR", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error)
End If
End If
End Sub
Continuamos investigando, saludos
-
- Mensajes: 56
- Registrado: Mar Feb 01, 2011 8:09 pm
Re: DLL Contabilidad Electrónica y NET
Hola DADO, una pregunta, ¿en que lenguaje esta compilada la DLL?, ya que he estado leyendo algunos caso de importación de DLL desde otros lenguajes en NET y en algunos casos hay que hacer arreglos adicionales. Saludos
- Dado
- Mensajes: 15922
- Registrado: Mar Jul 06, 2010 7:56 pm
Re: DLL Contabilidad Electrónica y NET
Esta programada en Delphi
Te sugiero que sigas la recomendacion de jggtz :
Te sugiero que sigas la recomendacion de jggtz :
Te recomiendo estudiar el ejemplo en VB.Net que utiliza la libreria CFDLib.dll (para Facturacion electronica)
ADDENDAS? VALIDACION? CODIGO PARA PROGRAMAR TU PROPIA SOLUCION? TODO LO TENEMOS EN WWW.VALIDACFD.COM VISITANOS !!
-
- Mensajes: 56
- Registrado: Mar Feb 01, 2011 8:09 pm
Re: DLL Contabilidad Electrónica y NET
Hola compañeros, ya quedo resuelto y les comparto el problema:
- El problema se debe a que en el proceso de compilación asume la DLL como compatible con 64 bits, lo cual no es correcto, por lo que manualmente hay que decirle al compilador que lea la DLL como de 32 bits.
- Haciendo pruebas, en Visual 2013 no me arroja un error que identifique esta causa, y en Visual 2005 me arroja:
"Se ha intentado cargar un programa con un formato incorrecto. (Excepción de HRESULT: 0x8007000B)"
- Con éste error busqué en internet y encontré un mismo post de éste foro con la solución resuelto por RaulAA:
http://validacfd.com/phpbb3/viewtopic.p ... =1509#wrap
- Realice los ajustes en el compilador y funciono, muchas gracias por sus comentarios y es importante que igual y se pueda documentar ésta parte para quien quiera compilar con Visual Studio.
NOTA: En Visual 2013 no pude echarlo a andar, aún haciendo los ajustes comentados, por lo que me quedo en Visual 2005
Saludos
- El problema se debe a que en el proceso de compilación asume la DLL como compatible con 64 bits, lo cual no es correcto, por lo que manualmente hay que decirle al compilador que lea la DLL como de 32 bits.
- Haciendo pruebas, en Visual 2013 no me arroja un error que identifique esta causa, y en Visual 2005 me arroja:
"Se ha intentado cargar un programa con un formato incorrecto. (Excepción de HRESULT: 0x8007000B)"
- Con éste error busqué en internet y encontré un mismo post de éste foro con la solución resuelto por RaulAA:
http://validacfd.com/phpbb3/viewtopic.p ... =1509#wrap
- Realice los ajustes en el compilador y funciono, muchas gracias por sus comentarios y es importante que igual y se pueda documentar ésta parte para quien quiera compilar con Visual Studio.
NOTA: En Visual 2013 no pude echarlo a andar, aún haciendo los ajustes comentados, por lo que me quedo en Visual 2005
Saludos