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
TStringsは抽象クラスだからオブジェクトは作れないはずですが、実体は何ですか?
TStringListとかTListBox.Itemsの類ならそのコードで問題なく動くはずだけど
派生クラスによってはObjectsを実装してないこともありえますね。
回答ありがとうございます。このStringsは、TMemoのLinesです。
コンパイルは通りますし、ヘルプにもTStrings.AddObjectという項目が
あったので、当然のように動くと思っていました。
なるほど。TCustomMemo.Linesのヘルプを見ると次のようにあります。
> リスト内の文字列にオブジェクトを関連付ける処理のサポートは実装しません。
やはり実装されていないので、別にリストを作って管理するとかしないといけなさそうですね。
すばやい回答、どうもありがとうございました。
完全に解決しました。TStringListを1つ作って管理します。
今日中になんとかしたかった事項なので、本当に助かりました。
ツイート | ![]() |