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

), 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
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

, la funcion que me marcaba error en Vb.net ya funciona tambien

. 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
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
Adjunto el proyecto, esta hecho en VB Express 2010 con .NET framework 3.5
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

, 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

, pero los metodos deben de ser los mismos, DLLImport, System.Drawing.Colors, etc.
