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 )