mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-12-28 19:20:31 +01:00
* more handling of varUString in Variant utility functions
This commit is contained in:
parent
8b6de92c9c
commit
090df8e689
@ -2327,6 +2327,10 @@ begin
|
||||
Dest.vType := varOleStr;
|
||||
Dest.vOleStr := nil;
|
||||
WideString(Pointer(Dest.vOleStr)) := WideString(Pointer(vOleStr));
|
||||
end else if vType = varUString then begin
|
||||
Dest.vType := varUString;
|
||||
Dest.vustring := Nil;
|
||||
UnicodeString(Dest.vustring) := UnicodeString(vustring);
|
||||
end else if vType = varAny then begin
|
||||
Dest := Source;
|
||||
RefAnyProc(Dest);
|
||||
@ -2456,6 +2460,11 @@ begin
|
||||
varDate: SysVarFromTDateTime(Variant(aDest), VariantToDate(aSource));
|
||||
{$endif}
|
||||
varOleStr: DoVarCastWStr(aDest, aSource);
|
||||
varUString: begin
|
||||
DoVarClearIfComplex(aDest);
|
||||
aDest.vType := aVarType;
|
||||
UnicodeString(aDest.vustring) := VariantToUnicodeString(aSource);
|
||||
end;
|
||||
varBoolean: SysVarFromBool(Variant(aDest), VariantToBoolean(aSource));
|
||||
varShortInt: SysVarFromInt(Variant(aDest), VariantToShortInt(aSource), -1);
|
||||
varByte: SysVarFromInt(Variant(aDest), VariantToByte(aSource), 1);
|
||||
|
||||
@ -77,6 +77,8 @@ begin
|
||||
;
|
||||
varOleStr:
|
||||
WideString(Pointer(VOleStr)):='';
|
||||
varUString:
|
||||
UnicodeString(VUString):='';
|
||||
varDispatch,
|
||||
varUnknown:
|
||||
iinterface(vunknown):=nil;
|
||||
@ -115,6 +117,8 @@ begin
|
||||
Move(VBytes, VargDest.VBytes, SizeOf(VargDest.VBytes));
|
||||
varOleStr:
|
||||
CopyAsWideString(VargDest.VOleStr,VOleStr);
|
||||
varUString:
|
||||
UnicodeString(VargDest.vustring):=UnicodeString(vustring);
|
||||
varDispatch:
|
||||
IUnknown(VargDest.vdispatch):=IUnknown(VargSrc.vdispatch);
|
||||
varUnknown:
|
||||
@ -156,6 +160,7 @@ begin
|
||||
VarQWord : VargDest.VQWord:=PQWord(VPointer)^;
|
||||
varVariant : Variant(VargDest):=Variant(PVarData(VPointer)^);
|
||||
varOleStr : CopyAsWideString(VargDest.VOleStr,PVarData(VPointer)^.VoleStr);
|
||||
varUString : VargDest.vustring:=PUnicodeString(VPointer)^;
|
||||
varDispatch,
|
||||
varUnknown : IInterface(VargDest.vUnknown):=IInterface(PInterface(VargSrc.VPointer)^);
|
||||
else
|
||||
@ -200,6 +205,7 @@ begin
|
||||
VarInt64 : VargDest.Vint64:=VariantToInt64(Tmp);
|
||||
VarLongWord : VargDest.VLongWord:=VariantToCardinal(Tmp);
|
||||
VarQWord : VargDest.VQWord:=VariantToQword(tmp);
|
||||
varUString : UnicodeString(VargDest.vustring):=UnicodeString(tmp.vustring);
|
||||
else
|
||||
Result:=VAR_BADVARTYPE;
|
||||
end;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user