Ну вот тебе покороче:| Код | type TUCSCode = $0410..$7A00; const AllChars = 'АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя'+ #168#184'.,!"№;%:?*()/0123456789+-=, '+ 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
function AnsiToUcs(const Convert:string):string; var i, ofs: integer; begin Result := ''; for i := 1 to Length(Convert) do begin ofs := AnsiPos(Convert[i], AllChars); if ofs > 0 then Result := Result + IntToHex(Low(TUCSCode) + ofs - 1, 4); end; end;
function UcsToAnsi(const Convert:string):string; var i, c: integer; begin Result := ''; i := 1; while i <= Length(Convert) do begin c := StrToIntDef('$'+ Copy(Convert, i, 4), -1); if (c >= Low(TUCSCode)) and (c <= High(TUCSCode)) then Result := Result + AllChars[c - Low(TUCSCode) + 1]; inc(i, 4); end; end;
procedure TForm1.Button2Click(Sender: TObject); var s: string; begin s := 'а б в г д е ё ж з и й к л м н'; s := AnsiToUcs(s); ShowMessage(s); s := UcsToAnsi(s); ShowMessage(s); end; | Добавлено @ 11:25 Только у тебя на 2С00 и на 002С стоят 2 запятые, так надо, что ли?? |