2日前から、私は自分の簡単なクラスをゼロから作り始めましたTObject
。また、ファイルとの間で書き込み/読み取りを行う必要があったため、検索した後、シリアル化の詳細をすべて学習しておらず、完全に取得していないため、ここからシリアル化メソッドを借用しました。私がそれをテストしていたので、それはうまくいきました。次に、別のクラスをプロパティとして追加しました(これは、sup-propertyと言うときに参照しています:クラスのプロパティであるクラスのプロパティ...紛らわしいですが、適切な名前が必要です)。これそれを実際に行う方法についての質問です。これで、ファイルへの書き込みでエラーが発生することはないようですが、サブプロパティが正しく書き込まれているか、単なるゴミであるかはわかりません。しかし、それを読み返すと、
メッセージ「無効なプロパティタイプ:TSomething」を含む例外クラスEPropertyConvertError
私はこれを学んでいるだけなので、何が悪いのかわかりません。私はいくつかの野蛮な推測を持っていますが、そのうちの1つは、TSomething = Class
おそらく独自のシリアル化メソッドを持っている必要があるということですか?その場合、それはどのように機能しますか(私でさえこの仮定を信じていないため)?もう1つは、delphi.about.comから借用したコードでは、これらのタイプのプロパティを処理できないということです。もしそうなら、どうすればそれを改善できますか?そして、私の推測のどれも正しくない場合、これをどのように機能させるでしょうか?(そして私はDelphiXE2を使用しています。)
リクエストに応じたコード:
TSomething = Class
protected
fNumber: integer;
fLine: string;
public
procedure Assign(Source: TObject);
published
property Number: integer read fNumber write fNumber;
property Line: string read fLine write fLine;
End;
TOther = Class
public
procedure LoadFromStream(const Stream: TMemoryStream);
procedure SaveToStream(const Stream: TMemoryStream);
constructor Create; virtual;
destructor Destroy; override;
protected
fSomething: TSomething;
procedure SetfSmth(AValue: TSomething);
published
property Something: TSomething read fSomething write SetfSomething;
end;
メソッドの実装は、上記で提供された2つのリンクから借用されています。要求されない限り、再入力する必要はないと思います。