Inconveniente con FoxBarcodeQR

257 views
Skip to first unread message

Alejandro Garcia G.

unread,
May 17, 2019, 10:36:43 AM5/17/19
to Comunidad de Visual Foxpro en Español
Estoy tratando de utilizar esa libreria, pero cuando compilo me da error pues dice que no existe, tengo el prg en el raíz de la aplicación ejecutable pero sale el error.

Esta es la instrucción que tengo en el prg de inicio para cargarla.

Set Procedure To Locfile("FoxBarcodeQR.prg") Additive

¿Que peude ser?

Alejandro Garcia G.

unread,
May 17, 2019, 12:47:30 PM5/17/19
to Comunidad de Visual Foxpro en Español
Me autorespondo.

Buscando solución al detalle, recorde que hace años habia publicado algo similar en otro app, no había vuelto a usarlo y por eso no recordaba. En fin, busque en ese proyecto como hice y lo replique, me funciono correctamente, no se por que o cual sea el motivo del error pero lo unico que hice fue poner esta insturcción:

SET PROCEDURE TO foxbarcodeqr additive


Y listo, compilo y no me da el error. Eso sí, el prg debe estar en el raíz del ejecutable.

Gracias igualmente

HernanCano

unread,
May 17, 2019, 6:26:27 PM5/17/19
to Comunidad de Visual Foxpro en Español
Alejandro:
¿Què diferencia HAY EN LAS DOS INSTRUCCIONES....?

Set Procedure To Locfile("FoxBarcodeQR.prg") Additive

SET PROCEDURE TO foxbarcodeqr additive


¿Las mayúsculas???????????

Personalmente no veo diferencia entre las dos.......

¿Cuál(es) de estos 4 archivos tienes....?

FoxBarcodeQR.prg
FoxBarcodeQR.app
FoxBarcodeQR.exe
FoxBarcodeQR.fxp

Nos cuentas....


Alejandro Garcia G.

unread,
May 18, 2019, 9:42:04 AM5/18/19
to Comunidad de Visual Foxpro en Español
No creo que sean las mayúsculas, ya que revisando el caso anterior que comente, escribia el nombre del prg en minúsculas y daba el mismo error. Quiero instanciar el prg nada mas. Y ese es el que tengo en el raíz.



HernanCano

unread,
May 18, 2019, 5:27:43 PM5/18/19
to Comunidad de Visual Foxpro en Español
Alejandro: por favor responde a preguntas útiles.

La pregunta sobre mayúsculas era broma (perdón si no captaste).

La otra pregunta es más útil.

Espero que después de responder esa pregunta, podamos aclarar lo que dices de "raíz".

HernanCano

unread,
May 18, 2019, 5:31:55 PM5/18/19
to Comunidad de Visual Foxpro en Español
Alejandro:
Algo que no mencionas en tu pregunta es:

Cuando un archivo no es encontrado, la función LOCFILE() abre la ventana Examinar para buscar manualmente el archivo.

No has dicho si la ventana Examinar te aparece.

James S

unread,
May 18, 2019, 11:41:18 PM5/18/19
to Comunidad de Visual Foxpro en Español
La respuesta es simple. Si quieres usar expresiones en estos comandos como SET PROCEDURE debes encerrarlo entre paréntesis, de lo contrario el runtime intenta ubicar el archivo en lugar de ejecutar la expresión.

Set Procedure To Locfile("FoxBarcodeQR.prg") Additive &&incorrecto
Set Procedure To (Locfile("FoxBarcodeQR.prg")) Additive && correcto

Las mayúsculas no tienen nada que ver. Ni fox ni el sistema de archivos de windows es sensible a mayúsculas.

HernanCano

unread,
May 19, 2019, 2:57:01 AM5/19/19
to Comunidad de Visual Foxpro en Español
James: ya se había aclarado lo de las mayúsculas.

HernanCano

unread,
May 19, 2019, 2:58:10 AM5/19/19
to Comunidad de Visual Foxpro en Español
James:
Ejecuté

Set Procedure To Locfile("FoxBarcodeQR.prg") Additive &&hernán: lo encontré correcto 

y funcionó como debiera.

HernanCano

unread,
May 19, 2019, 3:30:25 AM5/19/19
to Comunidad de Visual Foxpro en Español
Amigos:
Encontré una inconsistencia en el .PRG que considero que se puede ajustar.

El código que usé fue el sgte:

local oQR
set procedure to locfile("FoxBarcodeQR.prg") additive
oQR
= CREATEOBJECT('FoxBarcodeQR')
oQR
.QRBarcodeImage('Hernan Cano', 'Hernan.png',2,2)
release oQR

Estoy obteniendo el sgte mensaje de error:

err.png


Revisando la línea 79 (indicada en el mensaje), observo que intenta crear un directorio, y (estudiando la librería) me doy cuenta que el directorio que pretende crear es la ubicación del archivo que uno le envía en el segundo parámetro.

Pero noten que en la llamada sólo entrego el JustFName del archivo que quiero: no estoy escribiendo la ubicación.

De primera lo resolví haciendo la llamada de la sgte forma:

oQR.QRBarcodeImage('Hernan Cano', FullPath('hernan.png'),2,2)

Y evidentemente el mensaje ya no aparece.

Claro que la mejora interna a FoxBarcodeQR.prg puede ser una de dos formas:

Si la ubicación del segundo parámetro es vacía, entonces:
1. Suponer que la ubicación es sys(5)+curdir() (o también sys(2003)), más o menos así:

    ELSE
      m.lcFolder = JUSTPATH(m.tcFile)
      if empty(M.lcFolder)
         M.lcFolder = sys(5)+curdir()  && ambas instrucciones tiene el mismo efecto
       **M.lcFolder = sys(5)+sys(2003) && 
      endif
      IF NOT DIRECTORY
(m.lcFolder)
        MD 
(m.lcFolder)
      ENDIF
      m
.tcFile = FORCEEXT(m.tcFile, m.lcType)
    ENDIF


2. Al obtener la ubicación de ese segundo parámetro usar FulPath(tcFile), más o menos así:

    ELSE
      m
.lcFolder = JUSTPATH(FullPath(m.tcFile))
      IF NOT DIRECTORY
(m.lcFolder)
        MD
(m.lcFolder)
      ENDIF
      m
.tcFile = FORCEEXT(m.tcFile, m.lcType)
    ENDIF

Para la segunda alternativa es conveniente verificar si la ruta de la imagen a generar deba ser "completa" para la función de la DLL.
Es decir si se hace el ajuste de la segunda alternativa queda pendiente "ponerle" la ruta a la variable M.tcFile . Pero con el ajuste mostrado me funcionó correctamente.

Seguimos en contacto.


Alejandro Garcia G.

unread,
May 20, 2019, 5:39:55 PM5/20/19
to Comunidad de Visual Foxpro en Español
Saludos y gracias a todos. No habia entrado al foro hace un par de días.

Bueno, ya probe un par de sugerencias y me han servido: 
La que use yo por que ya la habia probado es hacer esto: SET PROCEDURE TO foxbarcodeqr additive

Luego, vi el mensaje de James S en donde me indica hacer esto: Set Procedure To (Locfile("FoxBarcodeQR.prg")) Additive, me funciono bien.

Recordemos que solo me da error al compilar.

Hernan da otra solución que no probe, no quice modificar el programa original pero asumo que funciona. Y Hernan, a veces no capto las bromas que me hace, me siento como un Sheldon por no comprender algunas cosas de ese estilo, pero igual me fue útil, por que me ha pasado lo siguiente, mis modulos (en DLL) están casi siempre en servidores GNU/Linux, y en ocasiones tengo problemas por las mayúsculas y minúsculas.

En fin, gracias por estar siempre prestos a colaborar y despejar inquietudes.

Alejandro.

Luis Maria Guayan

unread,
May 21, 2019, 4:55:52 PM5/21/19
to Comunidad de Visual Foxpro en Español
De la ayuda de FoxBarcodeQR:

SET PROCEDURE TO LOCFILE("FoxBarcodeQR.prg") ADITIVE
* --- Crear un objeto FoxBarcodeQR y la imagen de código de barras QR Code
LOCAL loFbc, lcQRImage
loFbc = CREATEOBJECT("FoxBarcodeQR")
lcQRImage = loFbc.QRBarcodeImage("http://vfpx.codeplex.com/wikipage?title=FoxBarcode",, 6,2)

Distribución: Los únicos archivos necesarios para ser distribuidos para que FoxBarcodeQR funcione correctamente son:

  • FoxBarcodeQR.prg
  • BarCodeLibrary.dll

Luis María Guayán
Tucumán, Argentina
_______________________________
Comunidad Visual FoxPro en Español
Reply all
Reply to author
Forward
0 new messages