USO de los DLL

User avatar
busmatic
Posts: 51
Joined: Fri Jun 30, 2006 6:56 pm
Contact:

USO de los DLL

Post by busmatic »

Estimados Amigos, Tengo un lector de barras 2d este genera una lectura de nuestra cedula de identidad, esta informacion es encriptada, me han dado la dll que desencripta y da los datos que necesito leer en un string separados por comas.

Mandaron el Dll y solo pusieron esto..

/*

cuenta con una librería denominada "BarCodeReader.dll" desarrollada en c++,
la cual cuenta con una unica funcion publica "LeeCodigoBarras" que recibe como argumento
la ruta de un archivo de texto, y retorna datos demográficos contenidos en la cédula de
identidad separados por comas(,). El archivo de texto debe contener
la lectura binaria de los 700 bytes contenidos en el código PDF417 que compone la cédula de identidad.
*/

Ya tengo el lector, este genera un archivo .BIN

dentro del dll esta la function.
Ahora tengo esto ..

static nHandle

Function Lector()
* Public oCedulatext := MEMOREAD("C:\proyectos\listbox\Bin\lecturas\lectura1.bin")
Public oCedulatext := "C:\proyectos\listbox\Bin\lecturas\lectura1.bin"

nHandle := Loadlibrary("BarCodeReader.dll")
msginfo(LeeCodigoBarras(oCedulatext))
FreeLibrary(nHandle)
return nil
*======================================================================
DLL FUNCTION LeeCodigoBarras(oCedulatext AS LPSTR) AS LPSTR LIB nHandle

Me da Una error
Microsoft Visual C++ Runtime Library
RunTime Error ¡¡

A alguien le ha pasado,, necesito ayuda, me enviaron solo el texto que ven arriba de informacion de la function.

Gracias
Busmatic de CR
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

Prueba asi:

DLL FUNCTION LeeCodigoBarras(oCedulatext AS LPSTR) AS LPSTR PASCAL LIB nHandle
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
busmatic
Posts: 51
Joined: Fri Jun 30, 2006 6:56 pm
Contact:

No funciona ,, pero ahora me edad un error STR()

Post by busmatic »

Bueno el error de runtime se quito, pero ahora me da un error,
Descripci¾n del detalle: Error BASE/1099 Error de argumento: STR
Argumentos:
[ 1] = U
[ 2] = U
[ 3] = U

Llamadas a la pila
==================
llamada desde: STR(0)
llamada desde: LEECODIGOBARRAS(0)
llamada desde: LECTOR(31)
llamada desde: ENTRADAS(70)



Pero lo aplique de esta manera

Function Lector()
* Public oCedulatext := MEMOREAD("C:\proyectos\listbox\Bin\lecturas\lectura1.bin")
* Public oCedulatext := "C:\proyectos\listbox\Bin\lecturas\lectura1.bin"
* Public oCedulatext := "C:\proyectos\listbox\Bin\lecturas\lectura2.txt"
* Public oCedulatext := "C:\proyectos\listbox\Bin\lecturas\lectura3.txt"
* nHandle := Loadlibrary("BarCodeReader.dll")
msginfo(LeeCodigoBarras(oCedulatext))
FreeLibrary(nHandle)
return nil
*======================================================================

DLL FUNCTION LeeCodigoBarras(oCedulatext AS LPSTR) AS LPSTR PASCAL LIB nHandle

Cualquier ayuda, los dioses los agradeceran
User avatar
busmatic
Posts: 51
Joined: Fri Jun 30, 2006 6:56 pm
Contact:

Omita el error STR(), fue culma mia,peor sigue el error

Post by busmatic »

Esque habia quitado la la variable de
nHandle := Loadlibrary("BarCodeReader.dll")
Por eso se da el SRT()

Aun no puedo dar con la solucion del problema.
Ayuda toda la posible.

Gracias
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

> Aun no puedo dar con la solucion del problema.

Cual es el problema ahora ? Que error da ?
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
busmatic
Posts: 51
Joined: Fri Jun 30, 2006 6:56 pm
Contact:

Estimado Antonio Linares

Post by busmatic »

Igual el mismo problema. no tomes en cuenta mi segundo post

MISMO PROPBLEMA

Con lo que me enviaste no mejoro


Microsoft Visual C++ Runtime Library
RunTime Error ¡¡

Busmatic de CR
Gracias Ayuda.......
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

Estas usando alguna otra función de la DLL ?

Muéstrame como estas usandola ahora, gracias
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
busmatic
Posts: 51
Joined: Fri Jun 30, 2006 6:56 pm
Contact:

Antonio Linares

Post by busmatic »

Mandaron el Dll y solo pusieron esto..

/*

cuenta con una librería denominada "BarCodeReader.dll" desarrollada en c++,
la cual cuenta con una unica funcion publica "LeeCodigoBarras" que recibe como argumento
la ruta de un archivo de texto, y retorna datos demográficos contenidos en la cédula de
identidad separados por comas(,). El archivo de texto debe contener
la lectura binaria de los 700 bytes contenidos en el código PDF417 que compone la cédula de identidad.
*/

Ya tengo el lector, este genera un archivo .BIN

bajar de el ftp el archivos.rar donde estan las .bin y .dll asi pudes hacer las pruebas dl caso.

http://www.incobus.com/pruebas/archivos.rar


dentro del BarCodeReader.dll esta la function. LeeCodigoBarras()

Ahora tengo esto ..

static nHandle

Function Lector()
* Public oCedulatext := ""C:\proyectos\listbox\Bin\lecturas\lectura1.bin")
Public oCedulatext := "C:\proyectos\listbox\Bin\lecturas\lectura1.bin"

nHandle := Loadlibrary("BarCodeReader.dll")

aqui es com la uso, es la unica function ke existe dentro de la .dll

msginfo(LeeCodigoBarras(oCedulatext))

FreeLibrary(nHandle)

return nil
*======================================================================
DLL FUNCTION LeeCodigoBarras(oCedulatext AS LPSTR) AS LPSTR LIB nHandle

Me da Una error
Microsoft Visual C++ Runtime Library
RunTime Error ¡¡
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

Has quitado la claúsula PASCAL.

Es necesaria ó se desalineará la pila (el stack) del procesador y por esa razón se produce el error de runtime.
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
busmatic
Posts: 51
Joined: Fri Jun 30, 2006 6:56 pm
Contact:

Antonio Linares tampoco hay algo.

Post by busmatic »

Function Lector()

* Public oCedulatext := MEMOREAD("C:\proyectos\listbox\Bin\lecturas\lectura1.bin")

http://www.incobus.com/pruebas/archivos.rar
** haber sbaja los archivos y pruebas y mcuentas

Public oCedulatext := "C:\proyectos\listbox\Bin\lecturas\lectura1.bin"

nHandle := Loadlibrary("BarCodeReader.dll")

msginfo(LeeCodigoBarras(oCedulatext))

FreeLibrary(nHandle)

return nil
*======================================================================


DLL FUNCTION LeeCodigoBarras(@oCedulatext AS LPSTR) AS LPSTR PASCAL LIB nHandle

EL mismo error ocurre, no cambia nada con Pascal o si en el mismo

ERROR

Microsoft Visual C++ Runtime Library
RunTime Error ¡¡
User avatar
busmatic
Posts: 51
Joined: Fri Jun 30, 2006 6:56 pm
Contact:

Antonio Linares , va de nuevo y mas claro.

Post by busmatic »

Estimado Antonio Linares

Te explico, Esta dll toma una informacion que encriptada en el .bin que te envie.

http://www.incobus.com/pruebas/archivos.rar

He enviado los dll y los bin , puede descargarlos del linK arriba.


La informacion descencripta y me retorna la informacion en un string separado por comas.


Se supone que es muy simple segun la parte que desarrollo la dll, cosa que llevo ya 15 dias peliando dia y noche y no encuentro manera.
Este dll cuenta con una librería denominada "BarCodeReader.dll" desarrollada en c++, la cual cuenta con una unica funcion publica "LeeCodigoBarras" que recibe como argumento la ruta de un archivo de texto, y retorna datos demográficos contenidos en la cédula de
identidad separados por comas(,). El archivo de texto debe contener
la lectura binaria de los 700 bytes contenidos en el código PDF417 que compone la cédula de identidad.

He probado de todas maneras, formas , pero veo que no , seria posible tratar de hacer un pequeña aplicacion en C y talvez aplicarla en fivewin XH y provar..


Agradecieria cualquier ayuda esto esta fuera de mi alcanze.

ya le puse Pascal y no funciono da mismo error
/***********************************************
#include "fivewin.ch"
#include "dll.ch"
#include "Constant.ch"

static nHandle

Function Lector()

* Public oCedulatext := ""C:\proyectos\listbox\Bin\lecturas\lectura1.bin")

Public oCedulatext := "C:\proyectos\listbox\Bin\lecturas\lectura1.bin"

nHandle := Loadlibrary("BarCodeReader.dll")


?? LeeCodigoBarras(oCedulatext)

FreeLibrary(nHandle)

return nil

DLL FUNCTION LeeCodigoBarras(oCedulatext AS LPSTR) AS LPSTR PASCAL LIB nHandle

Error que dice es

MICROSOFT VISUAL C++ RUNTIME LIBRARY
RUNTIME ERROR ¡¡¡
Cual ayuda agradecieria.

Garcias desde ya.
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

Solo por asegurarnos, has comprobado la existencia del fichero ?

MsgInfo( File( oCedulatext ) )

Puede parecer una tonteria, pero en esas tonterias se esconden los bugs :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

Comprueba tambien que la DLL se cargue bien:

MsgInfo( nHandle )
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

Y por último, como tu mismo has comentado, habria que probar la función en C directamente, para asegurarnos de que no haya algún error en alguna parte.
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

He probado la función desde C y falla igualmente (GPF), y leyendo lo que comentas observo esto:

"El archivo de texto debe contener la lectura binaria de los 700 bytes"

Como se explica que tu fichero lectura1.bin mida 291 bytes ???

Imagino que por eso da el GPF
regards, saludos

Antonio Linares
www.fivetechsoft.com
Post Reply