名前 題名 ▼ takiさん > ▼ Mr.XRAYさん > > takiさんのおかげて,またまた記事の修正をばしました. > > > > [130][04_コンポーネントをテキスト形式で保存] > > http://mrxray.on.coocan.jp/Delphi/plSamples/130_SaveComponent.htm#04 > > > > なんですが,Parent の設定をコンポの読み出しいの後だったのを > > コンポーネントを生成した直後に設定するようにしました. > > これで TMemo の Lines プロパティにテキストがあっても読み込めます. > > > > taki さん,サンクスです (^^ > > 実は、 > http://mrxray.on.coocan.jp/Delphi/plSamples/130_SaveComponent.htm#03 > 「TMemoryStream を使用したコンポーネントの保存と読み出しの例」より > Panel1をMemo99に置き換えて試してみた時に、 > > LMemo := TMemo.Create(Self); > LMemo.Parent := Self; // <-- ここを追加 > LStream := TMemoryStream.Create; > try > //ファイルからメモリストーリームに読み込む > LStream.LoadFromFile('AAA.dat'); > //メモリストリームからクラスのインスタンスを取得 > LStream.ReadComponent(LMemo); > … > だとエラーが出ない事に気が付いたのですが、 > > LStream.ReadComponent(LMemo);と > > function StringToComponentProc(Value: string): TComponent;内では > Result:= BinStream.ReadComponent(nil);が使われているので > その違いを調べていました。 > > 「Instanceがnil(Delphi)またはNULL(C ++)の場合、ReadComponentは > ストリーム内の型情報に基づいてコンポーネントを作成し、 > 新しく構築されたコンポーネントを返します。」Google翻訳 > > なので、Createした直後にParentを設定できないので > function StringToComponentProc(Value: string): TComponent;は > もったいないけど使えないな〜と思っています。 > > それと、IDEの「デバッガを使わずに実行」すると > 「Memo99.Lines.Stringsの読み取り中のエラー…」が表示されるんですね。 > ずっとデバッガからの実行だったので、「Memo99は親ウィンドウを持っていません」 > のエラー表示しか得られていませんでした。 > > 勉強になりました。 GIF,JPEG,PNG画像ファイル及びLZH,ZIPファイルをアップロードできます.600 x 1200 ピクセルを超える画像は縮小表示されます(画像クリックで拡大表示). (上限122000(120k)バイト) 削除キー Link