PrnGetName() falla

PrnGetName() falla

Postby gsabattino » Wed Mar 07, 2007 4:38 pm

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
gsabattino
 
Posts: 102
Joined: Fri Oct 14, 2005 12:03 am
Location: Valencia, Venezuela

Postby Antonio Linares » Thu Mar 08, 2007 11:15 am

Giancarlo,

Aqui esta funcionando correctamente con FWH 7.01

Comprueba que este es el código fuente de esa función:
Code: Select all  Expand view
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
Antonio Linares
Site Admin
 
Posts: 41945
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby gsabattino » Thu Mar 08, 2007 12:31 pm

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
gsabattino
 
Posts: 102
Joined: Fri Oct 14, 2005 12:03 am
Location: Valencia, Venezuela

Postby Antonio Linares » Thu Mar 08, 2007 2:00 pm

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
Antonio Linares
Site Admin
 
Posts: 41945
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby gsabattino » Thu Mar 08, 2007 2:31 pm

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
gsabattino
 
Posts: 102
Joined: Fri Oct 14, 2005 12:03 am
Location: Valencia, Venezuela

Postby Alfredo Arteaga » Thu Mar 08, 2007 3:34 pm

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.
User avatar
Alfredo Arteaga
 
Posts: 326
Joined: Sun Oct 09, 2005 5:22 pm
Location: Mexico


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 57 guests