From 50012c23575d367a2e37502a72164d37ce99c3d3 Mon Sep 17 00:00:00 2001 From: florian Date: Sat, 27 Sep 2008 13:25:11 +0000 Subject: [PATCH] * fix by Inoussa OUEDRAOGO to improve UnicodeString property handling, resolves #12224 git-svn-id: trunk@11832 - --- .gitattributes | 1 + rtl/objpas/typinfo.pp | 8 +++++++ tests/webtbs/tw12224.pp | 47 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 56 insertions(+) create mode 100644 tests/webtbs/tw12224.pp diff --git a/.gitattributes b/.gitattributes index fd0bd4d089..d0ca019557 100644 --- a/.gitattributes +++ b/.gitattributes @@ -8561,6 +8561,7 @@ tests/webtbs/tw12186.pp svneol=native#text/plain tests/webtbs/tw12202.pp svneol=native#text/plain tests/webtbs/tw12214.pp svneol=native#text/plain tests/webtbs/tw1222.pp svneol=native#text/plain +tests/webtbs/tw12224.pp svneol=native#text/plain tests/webtbs/tw1223.pp svneol=native#text/plain tests/webtbs/tw12233.pp svneol=native#text/plain tests/webtbs/tw1228.pp svneol=native#text/plain diff --git a/rtl/objpas/typinfo.pp b/rtl/objpas/typinfo.pp index 00f0501cb4..80857920ef 100644 --- a/rtl/objpas/typinfo.pp +++ b/rtl/objpas/typinfo.pp @@ -1216,6 +1216,8 @@ begin case Propinfo^.PropType^.Kind of tkWString: Result:=GetWideStrProp(Instance,PropInfo); + tkUString : + Result := GetUnicodeStrProp(Instance,PropInfo); tkSString: begin case (PropInfo^.PropProcs) and 3 of @@ -1272,6 +1274,8 @@ begin case Propinfo^.PropType^.Kind of tkWString: SetWideStrProp(Instance,PropInfo,Value); + tkUString: + SetUnicodeStrProp(Instance,PropInfo,Value); tkSString: begin case (PropInfo^.PropProcs shr 2) and 3 of @@ -1351,6 +1355,8 @@ begin case Propinfo^.PropType^.Kind of tkSString,tkAString: Result:=GetStrProp(Instance,PropInfo); + tkUString : + Result := GetUnicodeStrProp(Instance,PropInfo); tkWString: begin case (PropInfo^.PropProcs) and 3 of @@ -1385,6 +1391,8 @@ begin case Propinfo^.PropType^.Kind of tkSString,tkAString: SetStrProp(Instance,PropInfo,Value); + tkUString: + SetUnicodeStrProp(Instance,PropInfo,Value); tkWString: begin case (PropInfo^.PropProcs shr 2) and 3 of diff --git a/tests/webtbs/tw12224.pp b/tests/webtbs/tw12224.pp new file mode 100644 index 0000000000..54d8a9b392 --- /dev/null +++ b/tests/webtbs/tw12224.pp @@ -0,0 +1,47 @@ +program test_widestrprop_p2; +{$mode objfpc}{$H+} +uses + Classes, SysUtils, TypInfo; + +type + TClass_A = class(TPersistent) + private + Fwsp: UnicodeString; + published + property wsp : UnicodeString read Fwsp write Fwsp; + end; + +var + x : TClass_A; +begin + x := TClass_A.Create(); + WriteLn('Reading :'); + x.wsp := 'azerty'; + WriteLn(' Using GetUnicodeStrProp() : ',GetUnicodeStrProp(x,'wsp')); + if GetUnicodeStrProp(x,'wsp')<>'azerty' then + halt(1); + WriteLn(' Using GetStrProp() : ',GetStrProp(x,'wsp')); + if GetStrProp(x,'wsp')<>'azerty' then + halt(1); + WriteLn(' Using GetWideStrProp() : ',GetWideStrProp(x,'wsp')); + if GetWideStrProp(x,'wsp')<>'azerty' then + halt(1); + + WriteLn('Writing :'); + x.wsp := ''; + SetUnicodeStrProp(x,'wsp','azerty'); + WriteLn(' Using SetUnicodeStrPr() : ',x.wsp); + if x.wsp<>'azerty' then + halt(1); + x.wsp := ''; + SetStrProp(x,'wsp','azerty'); + WriteLn(' Using SetStrPr() : ',x.wsp); + if x.wsp<>'azerty' then + halt(1); + x.wsp := ''; + SetWideStrProp(x,'wsp','azerty'); + WriteLn(' Using SetWideStrPr() : ',x.wsp); + if x.wsp<>'azerty' then + halt(1); + writeln('ok'); +end.