문제

특히 구성 요소 공급업체가 VCL 구성 요소를 업그레이드하는 영역에서 구성 요소를 파일로 직렬화하고 다시 읽는 데 문제가 있는 사람이 있습니까?예를 들어 DelphiX로 직렬화된 파일을 몇 년 후에 delphiY로 다시 읽습니다.직렬화 형식이 변경됩니까? 그렇다면 업그레이드 시 구성 요소 읽기 오류를 방지하기 위해 수행할 수 있는 작업은 무엇입니까?

도움이 되었습니까?

해결책

게시된 속성을 직렬화하기 위한 내장 RTTI 기반 시스템은 구성 요소의 변경에 취약합니다.이전 속성이 새 객체에 유지되는 한 앞으로 나아가는 것은 관리 가능합니다.즉.속성 인터페이스는 그대로 두지만 원하는 경우 내용을 버릴 수 있습니다.뒤로 가는 것은 더 나쁩니다. 최신 버전으로 저장된 속성은 이전 버전 로드에서 열 수 없으므로 문제가 됩니다.

구성 요소/libs가 있습니다(http://www.torry.net/quicksearchd.php?String=RTTI&Title=예) XML 형식으로 직렬화를 추가할 수 있으며 모르는 콘텐츠를 건너뛰도록 선택할 수 있으므로 약간 도움이 될 수 있습니다.

게시된 콘텐츠를 디자인하는 방법에 대해 여전히 주의를 기울여야 하며 현재 버전에서 이해하지 못하는 콘텐츠를 "무시하지만 전파"하는 방법을 찾아야 합니다.이렇게 하면 파일을 제거하는 대신 최신 속성을 유지하면서 최신 형식으로 파일을 열고 변경할 수 있습니다.

다른 팁

공급업체가 구성 요소에 기능을 추가하면 형식이 확실히 변경됩니다.직렬화는 게시된 모든 속성을 반복하여 스트림에 저장합니다.다시 읽어올 때 스트림에서 읽은 각 속성은 구성 요소로 다시 설정됩니다.속성이 더 이상 존재하지 않으면 문제가 있는 것입니다.기본적인 예외 처리 외에는 아무것도 할 수 없다고 생각합니다.

호환성을 보장하는 가장 좋은 방법은 자체 직렬화를 수행하는 것입니다.

답장을 보내 주셔서 감사합니다.나는 사용자 정의 직렬화를 피하고 각 구성 요소 직렬화 기술을 활용하려고 노력했지만 새로운 구성 요소 형식으로 업그레이드를 "패치"할 수 있는 opf가 부족하여 사용자 정의 직렬화가 유일한 방법이라고 생각합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top