elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Código QR
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Código QR  (Leído 14,820 veces)
arfgh

Desconectado Desconectado

Mensajes: 45


Ver Perfil
Código QR
« en: 22 Abril 2018, 16:41 pm »

amigos quiero hacer  un programita para codificar y decodificar códigos QR. He visto dlls y cosas por ahí, pero casi ninguna permite decodificar, o sea leer.
Sin embargo he encontrado esta información, y pese a que parece que debería funcionar, pues no lo hace.

Tal vez algún experto de los que andan por aquí sabría  decir por qué no funciona ? y dónde  está el error.

http://coding4ever.net/blog/2012/06/01/menggunakan-library-net-di-vb-6/

aquí está el proyecto que compartió... http://www.4shared.com/file/PCRQSJzV/QRCode.html

gracias por adelantando


« Última modificación: 22 Abril 2018, 16:49 pm por arfgh » En línea

Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.351


Ver Perfil
Re: Código QR
« Respuesta #1 en: 23 Abril 2018, 12:00 pm »

No pude bajar el proyecto desde 4shared, te pide login y no tengo cuenta ahí, pero afortunadamente si la tengo en CodeProject, así que lo descargué desde allí...

He probado el sample que viene en la ruta: ...QRCode\QRCodeSampleApp\bin\Release\QRCodeSample.exe
Y simplemente falla. Crea las imágenes, aparentemente bien, pero luego al intentar decodificarlas, no es capaz de leer bien más que una sola letra...
Al principio he pensado que fácilmente el problema posría ser que al proceder de Asia, sea simplemente un problema de codificación (página de códigos), pero lo cierto es que en el sample, permite elegir entre alfanumerico, numerico y byte... entonces que fallara con alfanumérico pudiera tener sentido, pero con 'byte' no. Un byte de valor 45, es igual aquí que en China o en la Antártida. Luego veo que la librería ocupa nada menos que 6Mb.
Así que da cierta pereza ponerse a revisar tanto código por nada más que tratar de ayudar. En realidad yo no creo que generar una librearía QRcode (ambas direcciones), precise tanto código (viva la redundancia)... pero bueno.

Nunca he leído la especificación QRCode, pero no creo que suponga tanta complejidad que venga a requerir 6Mb. para codificar y decodificar. Sí recuerdo en cambio que en los años 80, en las revistas de informatica de la época (y libros), venían códigos en formatos similares (vamos que QRCode, no es ningún invento novedoso), en tiras alargadas (strip, no se qué, ), donde venían codificados algunos programas, que de otro modo ocuparian varias páginas de la revista. ...de hecho debo tener algún libro o revista por ahí con ellas... y ciertamente por aquella época todo andaba con pocos kb.
QRCode, por complejo que sea, seguramente lleve algún sistema de tratamiento o alteración del código, quizás incorpore el algoritmo de Solomon-Reed, posiblemente algna cosa más...

Me pregunto, si has intentado al menos leerte la especificación y ya con conocimiento de causa ver si te crees competente para implementarlo. ...porque probablemente se amás sencillo implementarlo de 0, que reapasar 6 mb, de código, para readaptarlo o corregir errores...


En línea

arfgh

Desconectado Desconectado

Mensajes: 45


Ver Perfil
Re: Código QR
« Respuesta #2 en: 23 Abril 2018, 12:43 pm »

pero amigo, lo que me interesa está en la carpeta QRcodeVB6.
en el artículo del sitio que comenté el que lo ha creado habla de unas modificaciones que hizo a la dll en c# para poder usar dicha dll desde vb6. Y ese es el problema, yo no consigo que funcione. Y ello pese a que he seguido todas las indicaciones del citado artículo...

he subido el archivo rar a mega.. https://mega.nz/#!cxhiBYBY!OXBO6LCPh9MH6Vg0drmLaQ6X5AaUg4NpeYwrxCMltNI

de todas maneras lo curioso de todo esto del QR.. he encontrado varias dlls que puedo usar, pero joder, ninguna permite la decodificación, o sea, solamente generan imágenes qr :( un ejemplo es la famosa qrcodelib.dll

No sé, tal vez alguno de vosotros sepa de alguna dll, o de algún class específico para vb6 que pudiese yo usar para generar y leer códigos qr localmente ?
« Última modificación: 23 Abril 2018, 13:06 pm por arfgh » En línea

Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.351


Ver Perfil
Re: Código QR
« Respuesta #3 en: 23 Abril 2018, 14:30 pm »

Ok... el archivo que yo me descargue, traía otrascarpetas, y no incluía ninguna específica de vb6.

Me descargo el fichero y veo de ojearlo rápida... a lo noche te comento.



Esperando por la comida me ha dado tiempo a probarlo y funciona correctamente... de hecho he probado a guardar la imagen a fichero y eliminarla del picturebox, y luego cambiar el contenido del texto, guardar varias más, cargar la primera y darle a decodificar... y funciona correctamente.

Si dices que te da, problema, asumo que lo que quizás te pase sea una de estas dos cosas (o las dos, quien sabe):

1 - En el proyecto de origen, la ruta de la librería se indica "G:\.... code.tlb", claramente, no es la misma ruta que nadie vaya a tener en su ordenador, luego vé al menú: proyecto --> Referencias --> verás que la librería está  huérfana, dale al botón 'Examinar..." y localiza la librería de tipos... y dale a Aceptar. Guarda el proyecto.

2 - Que no hayas registrado la librería de tipos, que para colmo, tampoco lo tienes complicado porque aunque proceda de NET, incorpora el comando de registro. En la carpeta lib, donde vienen la dll y la tlb, encontrarás el fichero "regcmd.bat", ejecútalo para registrar la librería. Esto tienes que hacerlo con el proyecto cerrado, si está abierto es probable que falle... revisa el mensaje de regASM (antes del mensaje de pausa, pondrá si hubo un problema o si fue todo bien)...

En cualquier caso, ambos porblemas son de novatos.

Finalmente abre el proyecto de nuevo, y ejecútalo, debería funcionarte bien...

« Última modificación: 23 Abril 2018, 15:26 pm por NEBIRE » En línea

arfgh

Desconectado Desconectado

Mensajes: 45


Ver Perfil
Re: Código QR
« Respuesta #4 en: 25 Abril 2018, 16:21 pm »

claro que hice lo del 'regasm'. Y cada vez que lo he  hecho, el comando dice que ha registrado la dll correctamente. Pero luego  al rular el código vb6, da error, leyendo y codificando. No me lo explico !
Mira, estoy usando windows 8.1 x64, no sé si tendrá algo que ver en esto...
de todas maneras, podrías  compilar el código que te funciona y enviarlo, más que nada para probar a ver...

al usar regasm, el resultado es este:

Código:
Z:\qrcode\QRCodeVB6\lib>Regasm ThoughtWorks.QRCode.dll /tlb: ThoughtWorks.QRCode
.tlb /codebase
Microsoft (R) .NET Framework Assembly Registration Utility 2.0.50727.4927
Copyright (C) Microsoft Corporation 1998-2004.  All rights reserved.

RegAsm : warning RA0000 : Registering an unsigned assembly with /codebase can ca
use your assembly to interfere with other applications that may be installed on
the same computer. The /codebase switch is intended to be used only with signed
assemblies. Please give your assembly a strong name and re-register it.
Types registered successfully
El exportador de la biblioteca de tipos detectó una advertencia al procesar 'Tho
ughtWorks.QRCode.Codec.Util.DebugCanvas.drawMatrix(matrix), ThoughtWorks.QRCode'
. Advertencia: No se admite el cálculo para matrices anidadas.
Assembly exported to 'Z:\qrcode\QRCodeVB6\lib\ThoughtWorks.QRCode.tlb', and the
type library was registered successfully

Z:\qrcode\QRCodeVB6\lib>pause
Presione una tecla para continuar . . .

editado: mira esta la captura del error que da programa al darle al botón 'encode'.


la linea del código donde da el error es esta:

picEncode.Picture = qrEncoder.EncodeVB6(txtEncodeData.Text)

Cómo es posible que te funcione a ti ?
« Última modificación: 26 Abril 2018, 00:35 am por arfgh » En línea

Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.351


Ver Perfil
Re: Código QR
« Respuesta #5 en: 26 Abril 2018, 04:04 am »

El mensaje de error, señala que falla la librería de tipos StdOLE2 que es de VB6... he dado por supuesto que has compilado más programas  en VB6, y que por tanto
1 - esa librería la tienes en el sistema,
2 - está registrada y
3 - la misma instalación de vb6, te funciona (sea cual sea el S.O. que tengas)...

Luego partiendo de esa base... es que sigo.
Abre con el editor de texto plano de tu preferencia el fichero del proyecto (Project1.vbp)
Esta es la ruta que viene en la línea (por defecto es correcta en los equipos para los que VB6 fue diseñado):
Reference=*\G{00020430-0000-0000-C000-000000000046}#2.0#0#C:\WINDOWS\system32\stdole2.tlb#OLE Automation

Puede estar pasando alguna de las siguientes situaciones:
1- No tengas esa librería
2- La tienes pero no la tienes registrada.
3- La tienes y está registrada, pero la ruta donde yace es otra.
4- Tienes otra vesión, no la versión 2.0 de vb6 (que es la que se precisa).

Hay formas rápidas de comprobarlo...
A - Abre un nuevo proyecto (vacío, sin código), guárdalo, compílalo, y luego abre la carpeta y pon en marcha el ejecutable... si funciona... ve al proyecto, ábrelo con el editor de texto, y mira la línea correspondiente a la referencia de StdOLE2... copia esa línea y remplaza la que tienes en el proyecto QR-Code equivalente, por ésta, y guarda los cambios, ya debiera funcionarte.

Si no te ha funcionado, lo anterior (es decir nunca has compilado antes un proyecto en VB6 en tu equipo actual, con tu S.O. actual)....

B - Abre el registro de windows (regedit)... sitúate (es decir, pincha para seleccionar y posicionar ahí el cursor) en la raíz de la base de datos del registro (Mi PC, my Computer, o lo que sea que ponga según versión e idioma) .
Ahora dale al menú --> Editar --> Buscar  y en la ventana de búsqueda pega: stdole2.tlb  (sin comillas ni espacios).... cuando lo encuentre si despliegas la rama, encontrarás la ruta donde se localiza la librería de tipos...
O bien búscala tu mismo desplegando las ramas (puede que en tu sistema varía, ya que Mocosoft, cambia cosas siempre entre versiones): Mi Pc --> HKey classes root --> Typelib --> HKEY_CLASSES_ROOT\TypeLib\{00020430-0000-0000-C000-000000000046} Despliega la clave... 2.0 --> 0 --> win32 -----> a la derecha vendrá la ruta donde se encuentra registrada. Esa ruta es la que debes poner en el fichero de proyecto QR-Code...

O simplemente abre el proyecto, ve a referencias y busca la ruta manualmente hasta la librería huérfana... tal como te señalé, para la otra.

Esta es la info que tengo de mi librería... (para VB6 uso un XP)... coincide con la info que te muestra...
"stdole, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
« Última modificación: 26 Abril 2018, 04:14 am por NEBIRE » En línea

arfgh

Desconectado Desconectado

Mensajes: 45


Ver Perfil
Re: Código QR
« Respuesta #6 en: 26 Abril 2018, 21:37 pm »

amigo, todo lo que has dicho coincide y está bien. Esa stdole.tlb está en...

Reference=*\G{00020430-0000-0000-C000-000000000046}#2.0#0#C:\Windows\SysWOW64\stdole2.tlb#OLE Automation

y está en el registro tal y como has dicho. Lo he vuelto a hacer todo de nuevo. Y sale el mismo error tanto al encode como al usar decode. No me lo explico !
En línea

Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.351


Ver Perfil
Re: Código QR
« Respuesta #7 en: 27 Abril 2018, 01:16 am »

Ya, pero el mensaje de error es claro:
"El sistema no puede encontrar el archivo especificado"...

Mira de intentar esto: Copia el fichero stdole2.tlb a la misma carpeta donde tienes el proyecto e intenta ejecutarlo, compilarlo... y cambia por tanto la ruta a local:
Reference=*\G{00020430-0000-0000-C000-000000000046}#2.0#0#stdole2.tlb#OLE Automation
Si ahora te funciona, en efecto el problema es que no le indicas la ruta correcta a la referencia... o no tienes privilegios de acceso.

Si el problema persiste, busca ayuda en google, no serás el primero que tiene un problema de ese tipo: el mensaje de error te muestra el número de error, usa google con dicho número y el texto (mejor en inglés): "could not load file or assembly stdole version 7.0"
En línea

arfgh

Desconectado Desconectado

Mensajes: 45


Ver Perfil
Re: Código QR
« Respuesta #8 en: 27 Abril 2018, 03:45 am »

el problema no puede estar en nesa 'stdole2.tlb'. En todos los proyectos que tengo, está como referencia. Y la dll la registro con el comando que este source trae. Esta dll no funciona en mi windows 8.1 x64, pero por qué ¿?
En línea

Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.351


Ver Perfil
Re: Código QR
« Respuesta #9 en: 27 Abril 2018, 16:38 pm »

A ver si no confundimos cosas.
La 'tlb' de qr-code está hacha en NET, y se registra con RegASM, pero la 'tlb' stodOLE2, es anterior a NET, no debe ser registrada con RegASM (entre otras cosas no sé si sería posible, porqué no sé de seguro que pueda cambiar).

La cuestión es que en efecto, stdOLE2.tlb, es una librería básica de vb6, contiene entre otras cosas la declaración de las interfaces IStdPicture e IStdFont, necesarias para manejar imágenes y fuentes (textos sobre gráficos en definitiva).

No has aclarado si has usado alguna vez (compilado otros proyectos en ese entorno: win8 64 bits), y quizás el problema sea que no esté bien instalado VS, o que tengas alguna desconfiguración. Así que al menos crea algún otro proyecto que no precise recurrir a librerías externas, añade un control picturebox, y añade un botón para ponerle una imagen en tiempo de ejecución... luego compílalo y usa el programa... si tienes problemas es que has desconfigurado algo... (o nunca antes ha funcionado correctamente VS en ese equipo). Si no tienes problemas, tampoco debieras tenerlos en ese proyecto.

...en definitiva, debe quedar claro, si el problema ha existido siempre (ó nunca lo has comprobado), o si el problema lo has creado tú (aunque sea inadvertidamente) al trastear con este proyecto. Ya que no tiene sentido tratar de encontrar un problema de forma aislada suponiendo algo, si el problema está más atrás o es de mucha más envergadura (que un problema con una ruta o versión o registro de 1 sola librería)...

Ayudaría por tanto saber (responde a las 3):
1 - Has compilado (y ejecutado y probado hasta la saciedad) algún proyecto anteriormente una vez instalado VS6?.
2 - Acabas de instalar VS6 justo para poder operar con este proyecto?.
3 - Puedes crear un proyecto rápido (como el descrito), compilarlo, probarlo y comentar si funciona?

« Última modificación: 27 Abril 2018, 16:40 pm por NEBIRE » En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines