Page 1 of 2

USO de los DLL

Posted: Sat Aug 30, 2008 11:26 pm
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

Posted: Sun Aug 31, 2008 3:09 pm
by Antonio Linares
Prueba asi:

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

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

Posted: Mon Sep 01, 2008 1:53 am
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

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

Posted: Mon Sep 01, 2008 2:14 am
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

Posted: Mon Sep 01, 2008 7:42 am
by Antonio Linares
> Aun no puedo dar con la solucion del problema.

Cual es el problema ahora ? Que error da ?

Estimado Antonio Linares

Posted: Mon Sep 01, 2008 2:21 pm
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.......

Posted: Mon Sep 01, 2008 2:42 pm
by Antonio Linares
Estas usando alguna otra función de la DLL ?

Muéstrame como estas usandola ahora, gracias

Antonio Linares

Posted: Mon Sep 01, 2008 5:38 pm
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 ¡¡

Posted: Mon Sep 01, 2008 6:04 pm
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.

Antonio Linares tampoco hay algo.

Posted: Mon Sep 01, 2008 8:18 pm
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 ¡¡

Antonio Linares , va de nuevo y mas claro.

Posted: Mon Sep 01, 2008 8:33 pm
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.

Posted: Mon Sep 01, 2008 10:21 pm
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 :-)

Posted: Mon Sep 01, 2008 10:23 pm
by Antonio Linares
Comprueba tambien que la DLL se cargue bien:

MsgInfo( nHandle )

Posted: Mon Sep 01, 2008 10:24 pm
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.

Posted: Mon Sep 01, 2008 11:06 pm
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