トップ «前の日(12-24) 最新 次の日(12-26)» 追記

K2さんの雑記


2002-12-25(Wed)

未熟

 Delphi-ML にて「えっ」という議論が...

 インスタンスを作成しなくても、クラスの通常メソッドは呼べてしまう。

 試しに、

type
  TFoo = class
  public
    procedure Show;
  end;
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  end;
procedure TFoo.Show;
begin
  ShowMessage('OK');
end;
procedure TForm1.Button1Click(Sender: TObject);
var
  foo: TFoo;
begin
  foo := nil;
  foo.Show; // <---------------------------------------- (a)
end;
(a) で、アクセス違反は起きない。
(a) のコードでは、コンパイラは Show の呼び出しを行うだけで、
    foo の参照についてはテストしない!

うー、知らなかった。当然 foo が nil の時は、Show 呼び出しでアクセス違反になると思っていたら、そうじゃないとは。確かに、呼び出しのコードを作成するだけと考えたら、それですべてつじつまが合うのだ。

 ちなみに、

type
  TFoo = class
  private
    FTest: Integer; // <--------------------------- 追加
  public
    procedure Show;
  end;
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  end;
procedure TFoo.Show;
begin
  ShowMessage(IntToStr(FTest)); <------------------- (b)
end;
procedure TForm1.Button1Click(Sender: TObject);
var
  foo: TFoo;
begin
  foo := nil;
  foo.Show;
end;

とすれば、(b)でアクセス違反が起きます。fooのインスタンスはまだ作成されていないので、FTestのメモリが確保されていないということですね。

 そう言われてみれば、今までデバッグでそういう現象を見たような記憶がある。不思議だなぁと思っていたような気もする。

 ちゃーんと理解して、心にたたき込んで置かないと、デバッグ時にとまどうことになるぞ。よーく覚えておこう。


2003-12-25(Thu)

出張

今日から長野出張です。帰宅は明日の夜遅くになります。


2006-12-25(Mon)

ITmedia Biz.ID:書類の束に「背ラベル」を付ける

お、kizuki君、ええ仕事してるやん。

君がいい仕事をするなんて、つまらんじゃないか(笑)。

ここのところウォッチしていなかったのだが、彼(or彼女)も成長したのだろうか。


1965|09|
2002|09|10|11|12|
2003|01|02|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|03|04|05|08|
2014|01|02|03|04|05|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|11|
2017|01|03|05|06|07|08|10|11|12|
2018|01|02|03|04|05|08|09|10|12|
2020|01|07|




2018年
12月
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
//
自己紹介
自己紹介
広告
計るだけダイエット
つっこみリスト
TrackBacks
日記仲間
/ / /
最近の日記