Witam

Mam pytanie, czy wałkował ktoś temat obsługi WideString'ów w FPC ? Konkretnie chodzi mi o uppercase'a dla unikodu. Dodam że rzecz dzieje się pod unix'em o którym nie mam zielonego pojęcia. W każdym razie kod:

ws : WideString;
ws := widestringmanager.upperwidestringproc(ws)

owocuje: Runtime Error 215 at $...

Co jest nie tak ? Pewnie mi czegoś brakuje w instalacji fpc, ale czego ... Jakich innych funkcji użyć ? Wiem że jest jakiś moduł cwstring (choć u mnie go nie znalazłem) w każdym razie z help'a wynika że lepiej używać widestringmanager'a.

Z góry dziękuję za pomoc

Pozdrawiam

// dopisane

A jednak jest cwstring, w initialization ma SetCWideStringManager:

Procedure SetCWideStringManager;
Var
  CWideStringManager : TWideStringManager;
begin
  CWideStringManager:=widestringmanager;
  With CWideStringManager do
    begin
...

      UpperWideStringProc:=@UpperWideString;
      LowerWideStringProc:=@LowerWideString;

...
    end;
  SetWideStringManager(CWideStringManager);
end;

Więc niby OK. Wcześniej widać nie byłu widestringmanager ustawiony. Teraz nie ma wylotki ale ... nie działa ! : ( ! Nie robi mi upper'a, może coś robię źle ?

program hello;
uses cwstring;
var
st : AnsiString;
ws: WideString;
begin
ws := #261; // to jest w unicode ą
writeln(ws); // krzaczki, ale to nic
st := UTF8Encode(ws); // teraz w st powinny być dwa znaki czyli ą w UTF8 196 133
writeln(Ord(st[2])); // i faktycznie drugi to 133 - jest OK
ws := widestringmanager.upperwidestringproc(ws); // przedtem tu wylatywało
writeln(ws); // krzaczki, ale to nic, gorzej że takie same jak na początku - UPPER NIE DZIAŁA
st := UTF8Encode(ws); // teraz w st powinny być dwa znaki czyli Ą w UTF8 196 132
writeln(Ord(st[2])); // i faktycznie drugi to 133 - jest do bani, nie zrobiło UPPER'a :(((
readln;
end.