mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-20 10:45:08 +02:00
* Fix Convertion between TUF8String and TString (length)
This commit is contained in:
parent
e49816e03a
commit
90ef672c12
@ -65,7 +65,7 @@ function VisualToLogical(const UTF8String:TUTF8String; pDir:TDirection):TVisualT
|
||||
|
||||
implementation
|
||||
|
||||
function UTF8Str(const s:TUTF8String):String;
|
||||
function DumpStr(const s:TUTF8String):String;
|
||||
var
|
||||
i:Integer;
|
||||
begin
|
||||
@ -173,7 +173,7 @@ var
|
||||
begin
|
||||
vp := 1;
|
||||
Result := '';
|
||||
for vp :=1 to Length(Src) do
|
||||
for vp := 1 to Length(Src) do
|
||||
Result += UnicodeToUTF8(Src[vp]);
|
||||
end;
|
||||
|
||||
@ -201,7 +201,7 @@ end;
|
||||
|
||||
function UTF8ToUCS16(const UTF8Char:TUTF8Char):TUCS16Char;
|
||||
begin
|
||||
case ComputeCharLength(@UTF8Char[1]) of
|
||||
case Length(UTF8Char) of
|
||||
1:{regular single byte character (#0 is a normal char, this is UTF8Charascal ;)}
|
||||
Result := ord(UTF8Char[1]);
|
||||
2:
|
||||
@ -209,7 +209,7 @@ begin
|
||||
or (ord(UTF8Char[2]) and %00111111);
|
||||
else
|
||||
Result := $FFFF;
|
||||
end
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
@ -219,14 +219,14 @@ var
|
||||
c:TUTF8Char;
|
||||
begin
|
||||
lp := 1;
|
||||
vp := 1;
|
||||
vp := 0;
|
||||
SetLength(Result, Length(Src));
|
||||
while lp <= Length(Src) do
|
||||
begin
|
||||
vp += 1;
|
||||
c := LCharOf(Src, lp);
|
||||
Result[vp] := WideChar(UTF8ToUCS16(c));
|
||||
lp += Length(c);
|
||||
vp += 1;
|
||||
end;
|
||||
SetLength(Result, vp);
|
||||
end;
|
||||
@ -436,6 +436,7 @@ var
|
||||
begin
|
||||
temp := UTF8ToUnicode(Dest);
|
||||
c := WideChar(UTF8ToUCS16(Src));
|
||||
WriteLn(3,HexStr(Word(c),4));
|
||||
Result := FreeBIDI.InsertChar(c, temp, vp, pDir);
|
||||
Dest := UnicodeToUTF8(temp);
|
||||
end;
|
||||
@ -470,6 +471,7 @@ begin
|
||||
if(v2l[i] < vp) and (v2l[i] > vp + len)
|
||||
then
|
||||
Delete(str, v2l[i], 1);
|
||||
WriteLn('kjjkjkjkj');
|
||||
end;
|
||||
|
||||
end.
|
||||
|
Loading…
Reference in New Issue
Block a user