Página 2 de 25

Re: Aqui esta la libreria dll para generar QR Code

Publicado: Mar Oct 26, 2010 9:07 am
por smendoza
Gracias dado, ahorita reviso eso de las cadenas. Acabo de terminar la implementacion de la otra funcion FullQRCode (despues de una buena dosis de googlear, curiosear y cafeína :shock: ), reviso eso de las cadenas y habro un nuevo post con la explicacion y el proyecto completo.

Saludos!

Re: Aqui esta la libreria dll para generar QR Code

Publicado: Mar Oct 26, 2010 10:24 am
por smendoza
Dado

Estuve buscando lo que mencionas sobre convertir una null-terminated string a VB, pero no encontre nada que "funcionara", lo que si econtre en varios lugares es que no se debe usar variables tipo "string" en una dll de Delphi.
An aside: you will need to master pchar type strings to send things to or from DLLs. You can receive things from DLLs into a normal Delphi string, as we have just done, but otherwise: it is pchar time. They aren't a big hassle, just a distraction to get past
(The pchar type is similar to the string type. You can't use string type variables for passing things to and from DLLs. If you do, you may get an "access violation" message when you run the program.)
Se tiene que usar Pchar en lugar de cualquier string :?

y de hecho al querer hacer algo similar a esto

Código: Seleccionar todo

Private Declare Function QRCodeLibVer Lib "C:\QRCodeLib.dll" () As String


MuestraMensaje ( "La version es : " + QRCodeLibVer);

me marca error y se cierra todo :o

fuente: http://sheepdogguides.com/dt3k.htm

Comenta :(

Re: Aqui esta la libreria dll para generar QR Code

Publicado: Mar Oct 26, 2010 12:12 pm
por Dado
Para ser honesto, si vi algo de eso y por eso use "ShortString" (en Delphi este "ShortString" es de maximo 255 caracteres y normalmente nadie lo usa), tambien vi que deberia usar PChar, deja le muevo un poco por aca y te aviso si encuentro algo.

Re: Aqui esta la libreria dll para generar QR Code

Publicado: Mar Oct 26, 2010 12:32 pm
por smendoza
dado escribió:Para ser honesto, si vi algo de eso y por eso use "ShortString" (en Delphi este "ShortString" es de maximo 255 caracteres y normalmente nadie lo usa), tambien vi que deberia usar PChar, deja le muevo un poco por aca y te aviso si encuentro algo.
Ok, porque de lo contrario, se genera mal el QR. De hecho con la misma funcion que tengo, si lo generas dos veces sale diferente una de la otra por eso de las 'strings'

Re: Aqui esta la libreria dll para generar QR Code

Publicado: Mar Oct 26, 2010 2:16 pm
por condor0086
"Important note about DLL memory management: ShareMem must be the first unit in your library's USES clause AND your project's (select Project-View Source) USES clause if your DLL exports any procedures or functions that pass strings as parameters or function results. This applies to all strings passed to and from your DLL--even those that are nested in records and classes. ShareMem is the interface unit to the BORLNDMM.DLL shared memory manager, which must be deployed along with your DLL. To avoid using BORLNDMM.DLL, pass string information using PChar or ShortString parameters"

Saludos

Re: Aqui esta la libreria dll para generar QR Code

Publicado: Mié Oct 27, 2010 11:13 am
por Dado
Ahora si, listo para Visual Basic.

A partir del trabajo publicado por smendoza me di a la tarea de modificar y ampliar la interface para Visual Basic

Ya esta bien probado y funcionan bien.

Por favor, VUELVAN a descargar las rutinas del post #1, lo actualice con las rutinas de VB

Nuevamente, gracias smendoza.....

Re: Aqui esta la libreria dll para generar QR Code

Publicado: Mié Oct 27, 2010 1:06 pm
por smendoza
dado escribió:Ahora si, listo para Visual Basic.

A partir del trabajo publicado por smendoza me di a la tarea de modificar y ampliar la interface para Visual Basic

Ya esta bien probado y funcionan bien.

Por favor, VUELVAN a descargar las rutinas del post #1, lo actualice con las rutinas de VB

Nuevamente, gracias smendoza.....

Andale!! ahora si jala :D , la funcion que me marcaba error en Vb.net ya funciona tambien :D . Estoy por terminar el proyecto en Vb.net, solo que tengo problemas para convertir los colores, en .net se usan colores del tipo System.Drawing.Color y en VB6 del tipo Long, ahi es donde estoy batallando, pero ahorita algo debe de salir :geek:

De nada dado, espero dejarla lista para .NET tambien

de hecho casi todo el codigo se puede reutilizar para vb.net, pero pretendo pasarlo utilizando el metodo DLLImport, y no "declare sub x lib ("libreria.dll")" : , que es la que viene en el framework del .net

Saludos!

Re: Aqui esta la libreria dll para generar QR Code

Publicado: Mié Oct 27, 2010 6:29 pm
por smendoza
Listo para VB.Net :D

Adjunto el proyecto, esta hecho en VB Express 2010 con .NET framework 3.5 :geek:

En .net se utiliza el metodo DLLImport, tal como habia mencionado antes, lo unico "batalloso" fue lo de los colores, ya que para VB6 estan definidos de tipo long (me imagino que para Delphi tambien) y en .NET son del tipo System.Drawing.Color.

Al final defini la funcion FullQRCode de la siguiente manera

Código: Seleccionar todo

<DllImport("QRCodeLib.dll", Entrypoint:="FullQRCode")> Private Shared Sub FullQRCode(ByVal autoConfigurate As Boolean, ByVal AutoFit As Boolean, ByVal backColor As System.Int32, ByVal barColor As System.Int32, ByVal Texto As String, ByVal correctionLevel As TQRCodeECLevel, ByVal encoding As TQRCodeEncoding, ByVal marginpixels As Integer, ByVal moduleWidth As Integer,ByVal Height As Integer, ByVal Width As Integer, ByVal FileName As String)
    End Sub
Se declararon las variables de color como tipo int32, y al llamar la funcion se convirtio el tipo System.Drawing.Color a int32 mediante el metodo ColorTranslator.ToOle( ) tal como se muestra:

Código: Seleccionar todo

   FullQRCode(True, False, ColorTranslator.ToOle(Color.Yellow), ColorTranslator.ToOle(Color.Red), "hola mundo", TQRCodeECLevel.LEVEL_M, TQRCodeEncoding.ceAUTO, 5, 5, 150, 200, "AlGusto.bmp")
Espero a alguien le sirva, saludos!

Re: Aqui esta la libreria dll para generar QR Code

Publicado: Mié Oct 27, 2010 8:38 pm
por Dado
@smendoza

Vaya, ahora si te la volaste, tengo entendido que esto que escribiste para VB.NET ya sirve de base para toda la plataforma .NET o no?

Re: Aqui esta la libreria dll para generar QR Code

Publicado: Mié Oct 27, 2010 9:56 pm
por smendoza
dado escribió:@smendoza

Vaya, ahora si te la volaste, tengo entendido que esto que escribiste para VB.NET ya sirve de base para toda la plataforma .NET o no?
Sip :D , solo cambian la manera de declarar las funciones de acuerdo al lenguaje en .NET que esten usando, digase C++ .NET, C#.NET, etc....hasta Delphi .NET :D , pero los metodos deben de ser los mismos, DLLImport, System.Drawing.Colors, etc. 8-)