掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
クラス配列や、配列を含むクラスなどをまとめたTComponent型のクラスをファイル保存、読出しする方法 (ID:149332)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
設定値(入力値)に基づき、配列を確保して各種計算処理後、その設定値と配列を含む計算結果のファイル保存と読出しをしようと思います。 元々設定値や計算結果はクラス宣言し、各変数やクラスを含むクラス(TObject)として作成していましたが、ファイルとのやり取りを考える中で、 Mr.XRAYさんの「」と別の書籍を参考に、すべてのデータを含む最上位(最下位?)のクラスをTComponent型にして、書き換えました。 Mr.XRAYさんのサンプルページ: http://mrxray.on.coocan.jp/Delphi/plSamples/130_SaveComponent.htm 各変数のpublishedなpropertyを作り、保存と読出しをテストしたところ、下記の問題があります。 1.下位のクラス(TCompornentに含まれるクラス)の配列でないpropertyは成功します。 2.下位のクラスの配列(クラスの配列も含む)は実現できていません。配列のproperty宣言の仕方がわからない。 下記も参考に読みましたが、そもそもファイルとの出し入れ目的なので、的が外れているようです。indexを使った宣言をした上で何らかの手段が必要かもしれませんが・・・? http://docwiki.embarcadero.com/RADStudio/Sydney/ja/%E3%83%97%E3%83%AD%E3%83%91%E3%83%86%E3%82%A3 クラス配列や、配列を含むクラスなどをまとめたTComponent型のクラスをファイル保存、読出しする方法を教えていただけませんか? 下記はそのクラスの宣言部です。(配列部などは宣言方法不明のため記述していません) unit TestClassUnit; interface uses Windows, Messages, SysUtils, Variants, Classes, Controls, Dialogs, StdCtrls, ExtCtrls, ExtDlgs; type TA = class(TPersistent) private FA1: integer; FA2: array of double; published property A1 :integer read FA1 write FA1; end; type TB = class(TPersistent) private FB1: integer; FB2: array of TA; public procedure SetArrayA(num: integer); published property B1 :integer read FB1 write FB1; end; type TC = class(TPersistent) private FC1: array of double; FC2: array of double; public procedure SetArrayC(num: integer); end; type TD = class(TComponent) public FD1: integer; FD2: double; FD3: TC; FD4: TB; constructor Create(AOwner: TComponent); override; destructor Destroy; override; end; implementation procedure TC.SetArrayC(num: Integer); begin SetLength(FC1, num); SetLength(FC2, num); end; constructor TD.Create(AOwner: TComponent); begin inherited Create(AOwner); FD3 := TC.Create; FD4 := TB.Create; end; destructor TD.Destroy; var i: Integer; begin FreeAndNil(FD3); for i := Low(FD4.FB2) to High(FD4.FB2) do begin FreeAndNil(FD4.FB2[i]); end; FreeAndNil(FD4); inherited; end; end.
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.