From: <ou...@us...> - 2009-02-05 21:27:55
|
Revision: 2621 http://jcl.svn.sourceforge.net/jcl/?rev=2621&view=rev Author: outchy Date: 2009-02-05 21:27:48 +0000 (Thu, 05 Feb 2009) Log Message: ----------- Mantis 4676 DotNetFormat does not handle UnicodeString type when argument passed as Variant type. Code in JclSimpleXml and JclStringList lacked support for UnicodeStrings as well. Modified Paths: -------------- trunk/jcl/source/common/JclSimpleXml.pas trunk/jcl/source/common/JclStringLists.pas trunk/jcl/source/common/JclStrings.pas Modified: trunk/jcl/source/common/JclSimpleXml.pas =================================================================== --- trunk/jcl/source/common/JclSimpleXml.pas 2009-02-04 21:14:50 UTC (rev 2620) +++ trunk/jcl/source/common/JclSimpleXml.pas 2009-02-05 21:27:48 UTC (rev 2621) @@ -3652,6 +3652,28 @@ StorageStream.Free; end; end; + {$IFDEF SUPPORTS_UNICODE_STRING} + varUString: + begin + StorageStream := TStringStream.Create(''); + try + ConversionString := TJclUTF16Stream.Create(StorageStream, False); + try + ConversionString.WriteBOM; + TXMLVarData(Source).XML.SaveToStringStream(ConversionString, '', nil); + ConversionString.Flush; + finally + ConversionString.Free; + end; + VarDataClear(Dest); + Dest.VUString := nil; + Dest.VType := varUString; + UnicodeString(Dest.VUString) := UnicodeString(StorageStream.DataString); + finally + StorageStream.Free; + end; + end; + {$ENDIF SUPPORTS_UNICODE_STRING} else RaiseCastError; end; Modified: trunk/jcl/source/common/JclStringLists.pas =================================================================== --- trunk/jcl/source/common/JclStringLists.pas 2009-02-04 21:14:50 UTC (rev 2620) +++ trunk/jcl/source/common/JclStringLists.pas 2009-02-05 21:27:48 UTC (rev 2621) @@ -494,33 +494,40 @@ else Add(A[I].ToString); {$ELSE} - with A[I] do - case VType of - vtInteger: - Add(IntToStr(VInteger)); - vtBoolean: - Add(string(BoolToStr[VBoolean])); - vtChar: - Add(string(AnsiString(VChar))); - vtExtended: - Add(FloatToStr(VExtended^)); - vtString: - Add(string(VString^)); - vtPChar: - Add(string(AnsiString(VPChar))); - vtObject: - Add(VObject.ClassName); - vtClass: - Add(VClass.ClassName); - vtAnsiString: - Add(string(VAnsiString)); - vtCurrency: - Add(CurrToStr(VCurrency^)); - vtVariant: - Add(string(VVariant^)); - vtInt64: - Add(IntToStr(VInt64^)); - end; + case A[I].VType of + vtInteger: + Add(IntToStr(A[I].VInteger)); + vtBoolean: + Add(string(BoolToStr[A[I].VBoolean])); + vtChar: + Add(string(AnsiString(A[I].VChar))); + vtExtended: + Add(FloatToStr(A[I].VExtended^)); + vtString: + Add(string(A[I].VString^)); + vtPChar: + Add(string(AnsiString(A[I].VPChar))); + vtPWideChar: + Add(string(WideString(A[I].VPWideChar))); + vtObject: + Add(A[I].VObject.ClassName); + vtClass: + Add(A[I].VClass.ClassName); + vtAnsiString: + Add(string(A[I].VAnsiString)); + vtWideString: + Add(string(A[I].VWideString)); + vtCurrency: + Add(CurrToStr(A[I].VCurrency^)); + vtVariant: + Add(string(A[I].VVariant^)); + vtInt64: + Add(IntToStr(A[I].VInt64^)); + {$IFDEF SUPPORTS_UNICODE_STRING} + vtUnicodeString: + Add(string(A[I].VUnicodeString)); + {$ENDIF SUPPORTS_UNICODE_STRING} + end; {$ENDIF CLR} Result := FSelfAsInterface; end; Modified: trunk/jcl/source/common/JclStrings.pas =================================================================== --- trunk/jcl/source/common/JclStrings.pas 2009-02-04 21:14:50 UTC (rev 2620) +++ trunk/jcl/source/common/JclStrings.pas 2009-02-05 21:27:48 UTC (rev 2621) @@ -49,7 +49,7 @@ { } {**************************************************************************************************} { } -{ Last modified: $Date:: $ } +{ Last modified: $Date:: $ } { Revision: $Rev:: $ } { Author: $Author:: $ } { } @@ -4968,7 +4968,10 @@ {$ENDIF COMPILER5} varString: Result := string(V.VString); - + {$IFDEF SUPPORTS_UNICODE_STRING} + varUString: + Result := string(V.VUString); + {$ENDIF SUPPORTS_UNICODE_STRING} {varArray, varDispatch, varError, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |