Page 1 of 1

Oemtoansi ERROR ??????

Posted: Fri Jun 01, 2007 8:52 am
by demont frank
Hello,

Using code page "FR" , i try to convert characters as à , é , ç , è to uppercase

i.e.

# include "fivewin.ch"

i := 233
? STR(i,3) + " : " + CHR(i) + " " + CHR(i-32)+"/"+UPPER(CHR(i))
Result :
233 : é É/é , Upper doesn't convert , É exists ! , but E should be better

i := 130
? OemToAnsi(STR(i,3) + " : " + CHR(i) + " " + CHR(i-32)+"/"+UPPER(CHR(i)))
Result :
130 : é b/E , i like this conversion to E but, In upper() is chr(i) not set to ansi !!!

MsgInfo( OemToAnsi(CHR(130)) , ASC(OemToAnsi(CHR(130))) , UPPER(OemToAnsi(CHR(130))) , UPPER(CHR(130)))

So to convert "é" , we have to do :

UPPER(AnsiToOem("é"))


Frank

Posted: Fri Jun 01, 2007 9:45 am
by Antonio Linares
Frank,

OemToAnsi() makes a call to a Windows API built-in function.

You can always implement your own OemToAnsi() function and make it work as you may need

Upper()

Posted: Fri Jun 01, 2007 10:02 am
by demont frank
Antonio,

Maybe it is not oemtoansi , but upper() that must be changed !!

Frank

Posted: Fri Jun 01, 2007 10:24 am
by Antonio Linares
Frank,

You can always make a proposal to the Harbour developers mailing list, as Upper() belongs to harbour runtime libraries (RTL), and be sure it will be reviewed

Posted: Mon Jun 04, 2007 1:01 pm
by Maurilio Viana
Frank, AnsiUpper convert accented characters to upper case.
i.e: AnsiUpper("éáç AEI aei") ------> Result: "ÉÁÇ AEI AEI"

(But it don't work with comercial xHarbour. Generate a GPF...)

Or you can create your own OemToAnsi / Upper function. I created my own Upper function (UpperPT_BR) to capitalize brazilian portuguese characters correctly.

Regards,
Maurilio