喫茶XRAYトップページ

[スレッド全体
]

[8806] with文とシンプルなテストプログラム返信 削除
2015/5/7 (木) 15:10:36 Mr.XRAY
シンプルなテストプログラムの作成と直接は関係ないかもしれませんが,

[自動生成していないFormからの参照のエラーを回避するには?]
http://hpcgi3.nifty.com/e-papy/DelphiBBS/wwwlng.cgi?print+201505/15050004.txt

ちょっとチェックしようと思って,以下で,つまづいてしまいました.

procedure TForm2.ButtonListDispClick(Sender: TObject);
var
  i   : integer;
  item  : TListboxItem;
begin
  with Form3 do begin
      //リストをクリア
      SelectList.Clear;    //ここでエラーになる
      SelectList.BeginUpdate;
   〜したい処理 省略〜

  end;  //with
end;

まず,with 文です.多分 Form3.SelectList だと思うのですが,
そうでなく,TForm3 以外のメンバを書く人もいます.
その下に 〜したい処理 省略〜 というのがあります.
シンプルなテストというのは,あくまでもシンプルにし方がいいのです.
省略はいけません.その省略したところが問題だった.
というのは,最近もありまました.これでは問題の切り分けには不十分です.
その 〜したい処理 省略〜 の中には,with にかかっているのと
そうでないのがごちゃまぜになっている可能性もあります.

with 文も,確実にそれとわかるものだけにしないと,結構悩みの元になります.
with 文内のプロパティ,メソッド,オブジェクトが全て,with 文の元の
オブジェクトにかかっている場合,あるいは,確実に係ることはないと,
明確にわかる場合に限って with 文内に書かないと,
とんでもないことになることがあります.

自分で分かっている場合はいいのですが,
他の人に教えてもらうという場合は,改めてシンプルなコードを作成した方が
いいのではないかと思います.
省略はダメです.コピペして動作するものが必要です.
特に私の場合,頭が悪いので,具体的でないとダメですね.

というわけで,チェックは中止しました.


参考
http://www.gesource.jp/weblog/?p=6025
(with文は使わない というのがあります)



[8807] Re:with文のネスト返信 削除
2015/5/7 (木) 15:19:18 Mr.XRAY
ネットで入手したコードには With 文のネストしたのもあります.
そうなると,バカな私には全くお手上げになります.
また,こんなのもあります.これもお手上げです.

  with AAA, BBB do begin
    ....
    ....
  end;


[▼次のスレッド]
INCM/CMT
Cyclamen v3.82