TListItemのDataプロパティをはじめて使っているのですが、どうにもエラーさんがでて困っています。
type
PListData = ^TListData;
TListData = record
Text : string;
Index: integer;
//その他諸々
end;
な適当な構造体を作っておき、ListViewにListItemを追加する際、
var
ListItem : TListItem;
LD : PListData;
begin
New(LD);
LD^.Text := '';
LD^.Index:= 0;
ListItem := ListView1.Items.Add;
Item.Caption := 'ふにゃらら';
Item.Data := Pointer(LD);
とし、ListViewのOnDeletionで
Dispose(Item.Data);
としています。
このまま実行すると、アプリ終了時に
EInvalidPointer
と出てきます。
ヘルプを引くと、ポインタを二重に破棄した場合や、無効なポインタを参照すると・・・
と書いてありました。私は、二重に破棄したつもりも、ポインタを参照したつもりもないのですが、何故にエラーが出てくるのでしょうか?解決法をお教えください。宜しくお願いします。
勝手に解決しました。申し訳ありませんでした。
このコードではエラーが起きませんでした(汗)。
for文で追加していたのですが、追加の度にNew()を発行しなければいけないんですね。。。。今思えば当たり前のことでした。。
ツイート | ![]() |