Page 1 of 1
PrnGetName() falla
Posted: Wed Mar 07, 2007 4:38 pm
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
Posted: Thu Mar 08, 2007 11:15 am
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( "" );
}
Posted: Thu Mar 08, 2007 12:31 pm
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
Posted: Thu Mar 08, 2007 2:00 pm
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
Posted: Thu Mar 08, 2007 2:31 pm
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
Posted: Thu Mar 08, 2007 3:34 pm
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.