PrnGetName() falla

Post Reply
User avatar
gsabattino
Posts: 100
Joined: Fri Oct 14, 2005 12:03 am
Location: Valencia, Venezuela

PrnGetName() falla

Post by gsabattino »

Saludos a todos...
Tenia algunos meses que no me acecaba al foro...
Me agrada ver nombres que para mi son nuevos, y muchos de ellos integrandose en la ayuda al resto de los que utilizamos FW como herramienta de desarrollo.

El tema es el siguiente...
la funcion PrnGetName() arroja un bello GPF cuando una aplicacion FWH se intenta correr en un equipo donde a nivel de Windows no se haya instalado una impresora previamente...

Hay alguna forma de prevenir eso???

Gracias de antemano por los comentarios,


Giancarlo J. Sabattino S.
Valencia, Venezuela
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

Giancarlo,

Aqui esta funcionando correctamente con FWH 7.01

Comprueba que este es el código fuente de esa función:

Code: Select all

CLIPPER PRNGETNAME( PARAMS ) // () --> cPrinter
{
   LPDEVNAMES lpDevNames; 

   PrinterInit(); 

   if( pd.hDevNames ) 
   { 
      lpDevNames = (LPDEVNAMES) GlobalLock( pd.hDevNames ); 

      if( lpDevNames ) 
      { 
         _retc( ( LPSTR ) lpDevNames + lpDevNames->wDeviceOffset ); 
         GlobalUnlock( pd.hDevNames ); 
      } 
      else 
         _retc( "" ); 
   } 
   else 
      _retc( "" ); 
}
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
gsabattino
Posts: 100
Joined: Fri Oct 14, 2005 12:03 am
Location: Valencia, Venezuela

Post by gsabattino »

Hola Antonio, Saludos...

Olvide añadir al post que aun estoy en la edad de bronce... :)
Uso FW2.4 y xHarbour 0.993

Tambien me doy cuenta de que no hice bien el planteamiento...
El GPF en la aplicación FW/xH se presenta cuando a nivel de Windows no se ha instalado ninguna impresora (carpeta de impresoras completamente vacia) y pasa por la función PrnGetName().

Al haber al menos una impresora instalada a nivel de Windows ya el problema no se presenta.

Gracias adelantadas por tus comentarios,

Giancarlo J. Sabattino S.
Valencia, Venezuela
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

Giancarlo,

Nosotros lo hemos probado quitando todas las impresoras de Windows y no da errores:

MsgInfo( GetPrnName() )

Muestra un MsgInfo() vacio sin texto
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
gsabattino
Posts: 100
Joined: Fri Oct 14, 2005 12:03 am
Location: Valencia, Venezuela

Post by gsabattino »

Si Antonio, lo que tu planteas es lo lógico, pero el caso es que con las versiones que estoy utilizando la funcion falla... (FW2.4 y xH0.993)

Voy a hacer unas pruebitas haciendo un programa usando solo la funcion para ver si se trata de algun elemento que pueda estar afectandola...

Gracias,

Giancarlo J. Sabattino S.
Valencia, Venezuela
User avatar
Alfredo Arteaga
Posts: 326
Joined: Sun Oct 09, 2005 5:22 pm
Location: Mexico
Contact:

Post by Alfredo Arteaga »

Prueba de esta forma:

IF GetPrintDefault(GetActiveWindow())<>0
oPrn:=PrintBegin("",.F.,,,.T.)
oPrn:SetPage(1)
PrintEnd()
ELSE
MsgAlert("Configure una impresora como predeterminada"+CRLF+ ;
"o no podrá visualizar los reportes.","Precaución!")
ENDIF

Saludos.
Post Reply