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

解決


SEH  2009-08-23 22:37:44  No: 35479  IP: 192.*.*.*

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-23 22:52:14  No: 35480  IP: 192.*.*.*

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

編集 削除
SEH  2009-08-23 23:10:19  No: 35481  IP: 192.*.*.*

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

編集 削除
tor  2009-08-23 23:17:30  No: 35482  IP: 192.*.*.*

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

編集 削除
SEH  2009-08-23 23:21:02  No: 35483  IP: 192.*.*.*

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

編集 削除