compiler, rtl: add vtUnicodeString (issue #0018560)

git-svn-id: trunk@16833 -
This commit is contained in:
paul 2011-01-29 09:18:53 +00:00
parent e77a9051c8
commit e4a6221bf3
3 changed files with 80 additions and 68 deletions

View File

@ -992,8 +992,9 @@ implementation
vtWideString = 15; vtWideString = 15;
vtInt64 = 16; vtInt64 = 16;
vtQWord = 17; vtQWord = 17;
vtAnsiString16 = 18; vtUnicodeString = 18;
vtAnsiString64 = 19; vtAnsiString16 = 19;
vtAnsiString64 = 20;
procedure tcgarrayconstructornode.pass_generate_code; procedure tcgarrayconstructornode.pass_generate_code;
var var
@ -1151,10 +1152,16 @@ implementation
freetemp:=false; freetemp:=false;
end end
else else
if is_widestring(lt) or is_unicodestring(lt) then if is_widestring(lt) then
begin begin
vtype:=vtWideString; vtype:=vtWideString;
freetemp:=false; freetemp:=false;
end
else
if is_unicodestring(lt) then
begin
vtype:=vtUnicodeString;
freetemp:=false;
end; end;
end; end;
end; end;

View File

@ -387,6 +387,7 @@
vtWideString = 15; vtWideString = 15;
vtInt64 = 16; vtInt64 = 16;
vtQWord = 17; vtQWord = 17;
vtUnicodeString = 18;
type type
PVarRec = ^TVarRec; PVarRec = ^TVarRec;
@ -418,6 +419,7 @@
vtInterface : (VInterface: Pointer); vtInterface : (VInterface: Pointer);
vtWideString : (VWideString: Pointer); vtWideString : (VWideString: Pointer);
vtInt64 : (VInt64: PInt64); vtInt64 : (VInt64: PInt64);
vtUnicodeString : (VUnicodeString: Pointer);
vtQWord : (VQWord: PQWord); vtQWord : (VQWord: PQWord);
end; end;

View File

@ -310,6 +310,9 @@ begin
else else
if CheckArg(vtAnsiString,false) then if CheckArg(vtAnsiString,false) then
hs:=ansistring(Args[doarg].VAnsiString) hs:=ansistring(Args[doarg].VAnsiString)
else
if CheckArg(vtUnicodeString,false) then
hs:=UnicodeString(Args[doarg].VUnicodeString)
else else
if CheckArg(vtVariant,true) then if CheckArg(vtVariant,true) then
hs:=Args[doarg].VVariant^; hs:=Args[doarg].VVariant^;