RXProps.pas
파일을 열어서 다음 두개의 함수를 바꾸어주세요..
UnicodeString 이 처리가 않되서 나타나는 현상 입니다.
수고하세요..
아마 RadStudio 2010 에도 마찬가지 일듯 합니다.
procedure TPropsStorage.LoadAnyProperty(PropInfo: PPropInfo);
var
S, Def: string;
begin
try
if PropInfo <> nil then begin
case PropInfo^.PropType^.Kind of
tkInteger: Def := StoreIntegerProperty(PropInfo);
tkChar: Def := StoreCharProperty(PropInfo);
tkEnumeration: Def := StoreEnumProperty(PropInfo);
tkFloat: Def := StoreFloatProperty(PropInfo);
tkWChar: Def := StoreWCharProperty(PropInfo);
tkLString: Def := StoreLStringProperty(PropInfo);
{$IFNDEF RX_D3} { - Delphi 2.0, C++Builder 1.0 }
tkLWString: Def := StoreLStringProperty(PropInfo);
{$ENDIF}
tkVariant: Def := StoreVariantProperty(PropInfo);
{$IFDEF RX_D4}
tkInt64: Def := StoreInt64Property(PropInfo);
{$ENDIF}
tkString: Def := StoreStringProperty(PropInfo);
tkSet: Def := StoreSetProperty(PropInfo);
tkClass: Def := '';
else Exit;
end;
if (Def <> '') or (PropInfo^.PropType^.Kind in [tkString, tkClass])
or (PropInfo^.PropType^.Kind in [tkLString,
{$IFNDEF RX_D3} tkLWString, {$ENDIF} tkWChar])
then
S := Trim(ReadString(Section, GetItemName(string(PropInfo^.Name)), Def))
else S := '';
case PropInfo^.PropType^.Kind of
tkInteger: LoadIntegerProperty(S, PropInfo);
tkChar: LoadCharProperty(S, PropInfo);
tkEnumeration: LoadEnumProperty(S, PropInfo);
tkFloat: LoadFloatProperty(S, PropInfo);
tkWChar: LoadWCharProperty(S, PropInfo);
tkLString: LoadLStringProperty(S, PropInfo);
{$IFNDEF RX_D3} { - Delphi 2.0, C++Builder 1.0 }
tkLWString: LoadLStringProperty(S, PropInfo);
{$ENDIF}
tkVariant: LoadVariantProperty(S, PropInfo);
{$IFDEF RX_D4}
tkInt64: LoadInt64Property(S, PropInfo);
{$ENDIF}
tkString: LoadStringProperty(S, PropInfo);
tkUString: LoadStringProperty(S, PropInfo);
tkSet: LoadSetProperty(S, PropInfo);
tkClass: LoadClassProperty(S, PropInfo);
end;
end;
except
{ ignore any exception }
end;
end;
procedure TPropsStorage.StoreAnyProperty(PropInfo: PPropInfo);
var
S: string;
begin
if PropInfo <> nil then begin
case PropInfo^.PropType^.Kind of
tkInteger: S := StoreIntegerProperty(PropInfo);
tkChar: S := StoreCharProperty(PropInfo);
tkEnumeration: S := StoreEnumProperty(PropInfo);
tkFloat: S := StoreFloatProperty(PropInfo);
tkLString: S := StoreLStringProperty(PropInfo);
{$IFNDEF RX_D3} { - Delphi 2.0, C++Builder 1.0 }
tkLWString: S := StoreLStringProperty(PropInfo);
{$ENDIF}
tkWChar: S := StoreWCharProperty(PropInfo);
tkVariant: S := StoreVariantProperty(PropInfo);
{$IFDEF RX_D4}
tkInt64: S := StoreInt64Property(PropInfo);
{$ENDIF}
tkString: S := StoreStringProperty(PropInfo);
tkUString: S := StoreStringProperty(PropInfo);
tkSet: S := StoreSetProperty(PropInfo);
tkClass: S := StoreClassProperty(PropInfo);
else Exit;
end;
if (S <> '') or (PropInfo^.PropType^.Kind in [tkString,
tkLString, {$IFNDEF RX_D3} tkLWString, {$ENDIF}
tkWChar]) then
WriteString(Section, GetItemName(string(PropInfo^.Name)), Trim(S));
end;
end;
|