TStringsのAddObjectを使ったときの動作

解決


SEH  2009-08-24 07:37:44  No: 35479

1点質問させてください。

下のようにTStringsのObjectに数字を格納して、数字の値に応じた処理を行おうとしていました。
  Strings.Clear;
  Strings.AddObject('2', TObject(5));
  Strings.AddObject('2', TObject(6));

ですが、
  Int1 := Integer(Strings.Objects[0]);
として取り出し、
  ShowMessage(IntToStr(Int1));
で表示してみると、数字の5や6が表示されず、0と出てしまいます。
このような使い方はできないのでしょうか。

環境は次のとおりです。
WinXP + Delphi6


tor  2009-08-24 07:52:14  No: 35480

TStringsは抽象クラスだからオブジェクトは作れないはずですが、実体は何ですか?
TStringListとかTListBox.Itemsの類ならそのコードで問題なく動くはずだけど
派生クラスによってはObjectsを実装してないこともありえますね。


SEH  2009-08-24 08:10:19  No: 35481

回答ありがとうございます。このStringsは、TMemoのLinesです。
コンパイルは通りますし、ヘルプにもTStrings.AddObjectという項目が
あったので、当然のように動くと思っていました。


tor  2009-08-24 08:17:30  No: 35482

なるほど。TCustomMemo.Linesのヘルプを見ると次のようにあります。
> リスト内の文字列にオブジェクトを関連付ける処理のサポートは実装しません。
やはり実装されていないので、別にリストを作って管理するとかしないといけなさそうですね。


SEH  2009-08-24 08:21:02  No: 35483

すばやい回答、どうもありがとうございました。
完全に解決しました。TStringListを1つ作って管理します。
今日中になんとかしたかった事項なので、本当に助かりました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加