FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour PICTURE "@!"
Posts: 632
Joined: Thu Jan 19, 2006 10:45 AM
PICTURE "@!"
Posted: Sun Mar 02, 2008 07:56 AM

Alguien sabe a que se debe que cuando utilizo la sentencia picture en un get del tipo PICTURE "@!" osea que me tome en mayusculas cuando coge una 帽 me la pone en minusculas y tengo que pulsar el Shift para que la ponga en 脩.
Problema del Harbour o Fivewin... todo el resto de letras me lo toma correcto, todas en mayusculas pero no en este caso.

Alguien conoce una solucion...

Saludos



Andr茅s Gonz谩lez desde Mallorca
Posts: 581
Joined: Tue Oct 11, 2005 11:28 AM
PICTURE "@!"
Posted: Sun Mar 02, 2008 12:16 PM

Hola Andres,

Realmente es muy extra帽o este comportamiento, pero lo que hago es en Resource Workshop, en la propriedad del get, lo pongo como UPPER CASE y listo.

Si alguna persona pueda darnos la soluci贸n desde codigo, seria buenissimo.

Saludos,

Kleyber Derick



FWH / xHb / xDevStudio / SQLLIB
Posts: 86
Joined: Sat Jun 24, 2006 04:27 PM
PICTURE "@!"
Posted: Sun Mar 02, 2008 09:29 PM

Buen d铆a para todos...

Prueba colocando el siguiente c贸digo en la clase TGet en el m茅todo KeyChar despues de declaraciones LOCAL y antes de cualquier otra linea de c贸digo. Ejemplo

KeyChar( nKey, nFlags ) CLASS TGet

LOCAL .........
LOCAL .........

if !Empty( ::cPicture ) .and. '@!' $ ::cPicture
nKey := Asc( UpperCase( Chr( nKey ) ) )
endif

...............
...............
Resto de c贸digo del m茅todo.

Nota: Deber谩s compilar y enlazar la clase TGet con los cambio mencionados en tu aplicaci贸n para que tome el cambio. Esta modificacion tambien toma los signos de puntuaci贸n en may煤sculas. Ej. 脕 脡 脥 脫 脷

Saludos,

Antonio Castro
Maracaibo - Venezuela
ant_cas@yahoo.com
Posts: 632
Joined: Thu Jan 19, 2006 10:45 AM
PICTURE "@!"
Posted: Mon Mar 03, 2008 09:33 AM

La sentencia que indicas ya viene incluida en la clase y justamente en el lugar que indicas, por lo que me temo que no es eso la solucion....

Gracias

Saludos



Andr茅s Gonz谩lez desde Mallorca
Posts: 632
Joined: Thu Jan 19, 2006 10:45 AM
PICTURE "@!"
Posted: Mon Mar 03, 2008 09:59 AM
Un poco basto pero funciona, el problema es que realizas una comparacion mas por cada pulsacion. Supongo que el error debe de estar en la funcion Upper que no realiza el trabajo bien.

 if ! Empty( ::cPicture ) .and. '@!' $ ::cPicture
		  if chr( nKey ) = "帽"
				nKey = 209    //脩 en mayusculas
		  else
        		nKey = Asc( Upper( Chr( nKey ) ) )
		  end
   endif
Saludos



Andr茅s Gonz谩lez desde Mallorca
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
PICTURE "@!"
Posted: Mon Mar 03, 2008 10:20 AM

Andr茅s,

Incluido para el pr贸ximo build, gracias!

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1445
Joined: Mon Oct 10, 2005 02:38 PM
PICTURE "@!"
Posted: Mon Mar 03, 2008 11:02 AM
Andr茅s Gonz谩lez wrote:Un poco basto pero funciona, el problema es que realizas una comparacion mas por cada pulsacion. Supongo que el error debe de estar en la funcion Upper que no realiza el trabajo bien.

 if ! Empty( ::cPicture ) .and. '@!' $ ::cPicture
		  if chr( nKey ) = "帽"
				nKey = 209    //脩 en mayusculas
		  else
        		nKey = Asc( Upper( Chr( nKey ) ) )
		  end
   endif


Ya puestos a hacer:

If ! Empty( ::cPicture ) .and. '@!' $ ::cPicture
If chr( nKey ) $ "帽莽"
if chr( nKey ) = "帽"
nKey = 209 //脩 en mayusculas
elseif chr( nKey ) = "莽"
nKey = ??? //脟 en mayusculas 驴Algui茅n sabe este c贸digo?
EndIf
EndIf
Else
nKey = Asc( Upper( Chr( nKey ) ) )
Endif


Saludos
Carlos G.

Un Saludo

Carlos G.



FiveWin 25.12 + Harbour 3.2.0dev (r2502110321), BCC 7.7 Windows 11 Home

Posts: 711
Joined: Thu Oct 06, 2005 09:57 PM
PICTURE "@!"
Posted: Mon Mar 03, 2008 11:38 AM

Creo que debe ser otra cosa. Yo uso la clase Tget sin modificar esa parte y me funciona sin problemas.

Un saludo



Manuel
Posts: 632
Joined: Thu Jan 19, 2006 10:45 AM
PICTURE "@!"
Posted: Mon Mar 03, 2008 01:01 PM

S铆 Manuel tienes raz贸n, seguro que corresponde a otro procedimiento el asignar el tema de las may煤sculas por eso he hecho la refexi贸n que el tema esta a la hora de transformar los c贸digos en el procedimiento UPPER no se si el tema va de la tabla ascii o que, pero bueno con esto se soluciona desde fivewin. Supongo que el tema del upper viene del harbour y que debe ser ah铆 donde se solucione.

Efectivamente tambi茅n hace falta la 莽, sobre todo aquellos que como yo vivimos en regiones de dominio del catal谩n. No usan la 帽 (ny) pero si la 莽.

Saludos



Andr茅s Gonz谩lez desde Mallorca
Posts: 86
Joined: Sat Jun 24, 2006 04:27 PM
PICTURE "@!"
Posted: Mon Mar 03, 2008 03:00 PM
Buen d铆a para todos...

Andr茅s Gonz谩lez wrote:La sentencia que indicas ya viene incluida en la clase y justamente en el lugar que indicas, por lo que me temo que no es eso la solucion....

Gracias


Fe de errata, el problema es la funcion Upper y se resuelve con este c贸digo que se me olvid贸 colocar en mi post anterior. fijate lo que coloque antes y veras la funci贸n UpperCase(), lo que se me olvid贸 es este c贸digo colocalo al final de la clase y listo. Disculpa que pas茅 por alto esto.

DLL32 STATIC Function UpperCase(cStr AS STRING) AS STRING PASCAL;
FROM "CharUpperA" LIB "user32.dll"

Nota: Por favor utilizalo y me comentas.
Saludos,

Antonio Castro
Maracaibo - Venezuela
ant_cas@yahoo.com
Posts: 1445
Joined: Mon Oct 10, 2005 02:38 PM
PICTURE "@!"
Posted: Mon Mar 03, 2008 06:56 PM
ARCC wrote:Buen d铆a para todos...

Andr茅s Gonz谩lez wrote:La sentencia que indicas ya viene incluida en la clase y justamente en el lugar que indicas, por lo que me temo que no es eso la solucion....

Gracias


Fe de errata, el problema es la funcion Upper y se resuelve con este c贸digo que se me olvid贸 colocar en mi post anterior. fijate lo que coloque antes y veras la funci贸n UpperCase(), lo que se me olvid贸 es este c贸digo colocalo al final de la clase y listo. Disculpa que pas茅 por alto esto.

DLL32 STATIC Function UpperCase(cStr AS STRING) AS STRING PASCAL;
FROM "CharUpperA" LIB "user32.dll"

Nota: Por favor utilizalo y me comentas.


A mi me da en los huesos que debe ser cosa de Harbour.
El error se da tambi茅n en FiveLinux y/o FWPPC? Si es as铆 la soluci贸n s贸lo vale para nuestro FiveWin y entonces se pierde la compatibilidad con los otros entornos.

Cierto? C贸mo lo ven?

Saludos
Carlos G.

Un Saludo

Carlos G.



FiveWin 25.12 + Harbour 3.2.0dev (r2502110321), BCC 7.7 Windows 11 Home

Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
PICTURE "@!"
Posted: Mon Mar 03, 2008 07:03 PM
As铆 funciona correctamente:
REQUEST HB_Lang_ES 
REQUEST HB_CODEPAGE_ESWIN 

function Main()

   HB_LangSelect("ES") // Para mensajes, fechas, etc.. 
   HB_SetCodePage("ESWIN") // Para ordenaci贸n, requiere CodePage.lib

   MsgInfo( Upper( "帽" ) )

return nil
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
PICTURE "@!"
Posted: Mon Mar 03, 2008 07:06 PM

Ojo, aqui funciona bien con Harbour pero NO con xHarbour

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 86
Joined: Sat Jun 24, 2006 04:27 PM
PICTURE "@!"
Posted: Mon Mar 03, 2008 08:50 PM
Buen d铆a para todos...

Antonio Linares wrote:Ojo, aqui funciona bien con Harbour pero NO con xHarbour


Antonio:

Si tienes raz贸n en xHarbour no funciona y el problema con la clase tGet es muy viejo, yo saqu茅 esa funci贸n UpperCase la cual uso desde FWH 2.4, por favor prueba tu mismo ejemplo con la funci贸n UpperCase en FWH y FWxH funciona de maravilla.

#include "FiveWin.ch"

REQUEST HB_Lang_ES
REQUEST HB_CODEPAGE_ESWIN

function Main()

HB_LangSelect("ES") // Para mensajes, fechas, etc..
HB_SetCodePage("ESWIN") // Para ordenaci贸n, requiere CodePage.lib

MsgInfo( Upper( "帽" ) )
MsgInfo( UpperCase( "帽" ) )

return nil

DLL32 STATIC Function UpperCase(cStr AS STRING) AS STRING PASCAL;
FROM "CharUpperA" LIB "user32.dll"
Saludos,

Antonio Castro
Maracaibo - Venezuela
ant_cas@yahoo.com
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
PICTURE "@!"
Posted: Mon Mar 03, 2008 11:10 PM

Antonio,

Totalmente de acuerdo. Hemos cambiado Upper() por UpperCase(). Gracias!

Visto que xHarbour no lo hace bien, y que adem谩s hay diferencia con Harbour, lo id贸neo es usar la propia funci贸n del API de Windows.

regards, saludos

Antonio Linares
www.fivetechsoft.com