jak w temacie.
jest moze jakas gotowa funkcja ktora to zrobi?
czy musze po prostu "przeleciec" po lancuchu znakow, sprawdzac czy to znak z ogonkiem, jesli tak do wstawic inny :-/
nie ma gotowej, ale np. w synapse jest cały moduł do konwersji
A może pobaw się WideCharToMultiByte, tam jest kilka opcji. Pamiętam, że można uzyskać podobny efekt.
dobra.. juz zrobilem.. w sumie nie jest tego az tak duzo...
pisalem wlasna wersje Pos() i tego potrzebowalem.
w koncu zrobilem to uzywajac AnsiLowercase() i "recznie" pozamienialem znaki z ogonkami na normalne...
czyli
ęóąśłżźćńâäçéëíôöúüýăččő
na
eoaslzzcnaaceeioouuyacco
ale dzieki za pomoc [browar]
Bawiłem się tym kiedy pisałem Notatnik ;-) Taki efekt uzyskuje się po zamianie na stronę kodową US-ASCII.
const
CP_USASCII = 20127;
function WideToAnsi(const Ws: WideString; Cp: Word): AnsiString;
var
I, F: Integer;
begin
if (Cp = CP_UTF7) or (Cp = CP_UTF8) then
F := 0 else
F := WC_COMPOSITECHECK or WC_DISCARDNS or WC_SEPCHARS or WC_DEFAULTCHAR;
I := Pred(WideCharToMultiByte(Cp, F, PWideChar(Ws), -1, nil, 0, nil, nil));
if I > 0 then
begin
SetLength(Result, I);
WideCharToMultiByte(Cp, F, PWideChar(Ws), -1, PAnsiChar(Result), I, nil, nil);
end else
Result := '';
end;
function AnsiToWide(const S: AnsiString; Cp: Word): WideString;
var
I, F: Integer;
begin
if (Cp = CP_UTF7) or (Cp = CP_UTF8) then
F := 0 else
F := MB_PRECOMPOSED;
I := Pred(MultiByteToWideChar(Cp, F, PAnsiChar(S), -1, nil, 0));
if I > 0 then
begin
SetLength(Result, I);
MultiByteToWideChar(Cp, F, PAnsiChar(S), -1, PWideChar(Result), I);
end else
Result := '';
end;
var
Ogonki, BezOgonkow: string;
begin
BezOgonkow := WideToAnsi(AnsiToWide(Ogonki, CP_ACP), CP_USASCII);
end;
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.