lcl: fixed LRSObjectTextToBinary toWString, issue #19650

git-svn-id: trunk@37642 -
This commit is contained in:
mattias 2012-06-14 11:51:35 +00:00
parent 68d9311e48
commit 95989934cf

View File

@ -2675,6 +2675,13 @@ var
Output.Write(s[1], Length(s));
end;
procedure WriteWideString(const s: WideString);
begin
WriteLRSInteger(Output,Length(s));
if Length(s) > 0 then
Output.Write(s[1], Length(s)*2);
end;
procedure WriteInteger(value: LongInt);
begin
if (value >= -128) and (value <= 127) then begin
@ -2779,7 +2786,7 @@ var
WriteLRSExtended(Output,flt);
ParserNextToken;
end;
toString,toWString:
toString:
begin
toStringBuf := parser.TokenString;
//DebugLn(['ProcessValue toStringBuf="',toStringBuf,'" ',dbgstr(toStringBuf)]);
@ -2800,6 +2807,20 @@ var
WriteLongString(toStringBuf);
end;
end;
toWString:
begin
toStringBuf := parser.TokenString;
//DebugLn(['ProcessValue toStringBuf="',toStringBuf,'" ',dbgstr(toStringBuf)]);
while ParserNextToken = '+' do
begin
ParserNextToken; // Get next string fragment
if not (parser.Token in [toString,toWString]) then
parser.CheckToken(toString);
toStringBuf := toStringBuf + parser.TokenString;
end;
Output.WriteByte(Ord(vaWString));
WriteWideString(UTF8Decode(toStringBuf));
end;
toSymbol:
begin
if CompareText(parser.TokenString, 'True') = 0 then
@ -5754,3 +5775,5 @@ finalization
end.