TListItemのDataでのエラーの対処をするには??

解決


ペェージ  2005-02-07 08:58:25  No: 13081

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
と出てきます。
ヘルプを引くと、ポインタを二重に破棄した場合や、無効なポインタを参照すると・・・
と書いてありました。私は、二重に破棄したつもりも、ポインタを参照したつもりもないのですが、何故にエラーが出てくるのでしょうか?解決法をお教えください。宜しくお願いします。


ペェージ  2005-02-07 09:51:55  No: 13082

勝手に解決しました。申し訳ありませんでした。
このコードではエラーが起きませんでした(汗)。
for文で追加していたのですが、追加の度にNew()を発行しなければいけないんですね。。。。今思えば当たり前のことでした。。


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

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






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