Delphi에서 Object를 직렬화하고 싶습니다. 새로운 RTTI를 사용하고 있습니다. 그러나 저장소에서 값을로드 할 때 문자열, s로 다시 검색되며 TRttiProperty.SetValue는 두 번째 인수로 TValue가 필요합니다. 따라서 '5.1'또는 '5'로 double로 선언 된 속성 값을 설정할 때 예외가 발생합니다.값을 문자열로 가질 때 문자열이 아닌 속성에 TRttiProperty.SetValue를 호출하려면 어떻게해야합니까?
또한 TValue.From()
메서드를 사용하여 성공하지 못했습니다.
여기는 잘못된 부분을 설명하는 코드입니다.
var P: TRttiProperty;
....
// P now is the property which is declared as a double or integer
P.SetValue(Self, '3'); //<-- this raises an exception.
편집 : 질문이 문자열 데이터 유형을 사용하여, 문자열 유형이 아닌 속성 값을 설정하는 얻는 방법이지만, 이는 유효한 데이터가 포함되어 있습니다. (위의 경우와 같은)
@Rob : 텍스트에 직렬화 된 숫자를 읽고 deserialize하려는 숫자처럼 보이며 문자열 -> 숫자 형식의 암시 적 변환이 부족하여 혼란 스럽습니다. –
질문을 편집하여 내가 원하는 내용에 대한 설명을 추가합니다. – zz1433