Page 1 of 1

La letra Ñ

Posted: Thu Jul 31, 2008 2:38 pm
by jfafive
Hola Antonio,
>
> Te escribo porquer llevo un tiempo con un rpblema que no he conseguido resolver.
>
> Se trata de una búsqueda que hago en un fichero word cargado con memoread así:
>
> cTxt := lower( MemoRead( cFile ) )
> cPal := lower( cPal ) // cPal es = a "CAÑONES"
>
> At( cPal, cTxt ) // Me devuelve 0, es decir, no la encuentra.
>
> Si hago un MsgInfo de cPal, me muestra "caÑones".
>
> ¿porqué no convierte la Ñ?

Respuesta:

Posted: Thu Jul 31, 2008 2:39 pm
by jfafive
Hola Javier,

Comprueba que tengas este código al comienzo de tu aplicación:

Tienes que añadir estas líneas al comienzo de tu PRG principal:

REQUEST HB_Lang_ES
REQUEST HB_CODEPAGE_ESWIN

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

saludos,

Posted: Thu Jul 31, 2008 5:37 pm
by JOSEMAR
ME OCURRE ALGO SIMILAR CAPTURA LA Ñ PERO LA GRABA CON OTRO CARACTER YA PROBE CON HB_LANG_ES Y NADA
CON HB_CODPAGE_ESWIN ME HACE FALTA LA CODPAGE.LIB

Posted: Fri Aug 01, 2008 5:01 pm
by Antonio Linares
Jose,

Comprueba si tienes CODEPAGE.lib (para xHarbour) ó HBCPAGE.lib (para Harbour).

Posted: Fri Aug 01, 2008 5:08 pm
by JOSEMAR
ANTONIO,

NO TENGO LA HBCPAGE.LIB.

A LA MEJOR ES LA VERSION ESTOY TODAVIA CON LA 2.4

Posted: Fri Aug 01, 2008 5:26 pm
by Antonio Linares
Si, en la versión 2.4 la librería en Harbour se llamaba codepage.lib

Recientemente es cuando se le ha cambiado el nombre, junto a otras librerias

Posted: Fri Aug 01, 2008 5:31 pm
by JOSEMAR
ANTONIO

PERO TAMPOCO TENGO LA CODPAGE.LIB

Posted: Fri Aug 01, 2008 7:25 pm
by Antonio Linares
Jose,

El nombre correcto es CODEPAGE.lib

De todas formas, el mejor consejo es que useis una versión más actualizada porque la versión 2.4 es ya bastante antigua, incluyendo la versión de Harbour/xHarbour que usa.

Posted: Fri Aug 01, 2008 11:09 pm
by Patricio Avalos Aguirre
hola

Alguien podria enviar el resultado de estas dos lineas
ya que a mi aunque tenga codepage.lib igual no cambia las Ñ

Code: Select all

	alert( lower( "NIÑA" ) )
	alert( upper( "niña" ) )

Posted: Sat Aug 02, 2008 1:01 am
by quique
Puedes probar con estas funciones de fivewin

alert( ansiLower( "NIÑA" ) )
alert( ansiUpper( "niña" ) )

Posted: Sat Aug 02, 2008 2:23 pm
by Patricio Avalos Aguirre
Gracias, funciona muy bien

en conclusion la funcion lower() de xharbour estaría mala?

Posted: Sat Aug 02, 2008 4:36 pm
by quique
no creo, hace lo mismo que la función de clipper, hasta donde tengo entendido, lo que comentan los compañeros son para, una traducir los mensajes que muestra (x)harbour, por ejemplo, los mensajes de error y nombres de dias y meses, la otra, para el ordenamiento en los índices.

Posted: Wed Aug 06, 2008 5:34 pm
by Patricio Avalos Aguirre
Estimados

Al parecer la funcion AnsiLower tiene un compartimineto extraño, cambia el valor de la variable?

Code: Select all

local cVar := "NIÑA"

alert( Lower( cVar ) ) // no cambia la Ñ a ñ == !Error
alert( cVar ) // deja la variable como corresponde, bien

alert( ansilower( cVar ) ) // cambia la Ñ a ñ == > BIEN
alert( cVar )  // cambia la variable a niña ==> MUY MAL..

:-(

Posted: Wed Aug 06, 2008 5:56 pm
by quique
cierto, ahora que lo mencionas, creo que si, ya tiene algunos años que no la utilizo, pero la respuesta correcta a esa pregunta nos la podría dar antonio, porque es una función de fivewin, pero lo que puedes hacer es

cPalabra := "niña"
:
:
cTemp := cPalabra
alert( ansiUpper( cTemp ) ) // Cambia el valor de la variable, pero solo la utilizas para mostrar el nuevo valor
alert( cPalabra )


o en su caso, si lo que quieres es asignarle el nuevo valor a otra variable, lo puedes hacer al revez

cPalabra := "niña"
cUpper := cPalabra
ansiUpper( cUpper )