よくあるエラーとその原因

プログラム作成中にエラーが出ることはよくあることで、ある意味で当たり前です。エラーが出たからと言ってそこであきらめてしまっては、先に進めません。エラーが出た場合は、まずそのエラー箇所を見つけ出すことです。そうすると、(多くの場合は) 自ずとその原因が明らかになり解決に至ることができます。「それはちょっと難しいのでは…?」と感ずるかもしれませんが、心配はいりません。ちゃんと Delphi がエラー箇所とその (エラーとなった) 理由をエラーメッセージとして教えてくれます。

ここでは、エラーメッセージの見方と、いくつかの典型的なエラーメッセージについて簡単に解説しておきましょう。

エラーメッセージの見方

エラーが出た場合は、画面下部のエラーメッセージを見て原因を考えましょう。

このエラーをダブルクリックすると、エラーが出た行が茶色に、エラーが出た場所が水色に表示されます。

ただし、水色の表示は、Delphi が「ここまでは何とか理解できたけど、この水色の場所で理解できなくなりました」という場所です。したがって、水色の場所が間違っているとは限りません。一般には、その場所を含めそれ以前にエラー (の原因) が存在することになります。

では、よくあるエラーとその原因を探っていきましょう。

未定義の識別子

「未定義の識別子 : 'ButtonTo'」と表示されたら、「ButtonTo というコンポーネントは知らないよ」というエラーです。大抵は、コンポーネントの Name プロパティの設定し忘れが原因です。

また、型宣言していない変数をプログラム中で用いた場合も同様のエラーが表示されます。「型宣言しているはずなのにおかしいな?」と思ったら、変数のスペルをよくみてください。スペルミスにより、宣言した変数のスペルと実際にプログラム中で使用した変数とのスペルが異なっているなずです。

宣言 が必要な場所に ファイルの末尾 があります

プログラムの最後に現れる

end.

という行を誤って消してしまった (又は誤って「end;」にしてしまった)ことが原因です。早速付け加えてください。

あるいは、プログラム中のbeginendの数が対応していない場合も、このエラーメッセージが表示されます。

'・・・' と '・・・' には互換性がありません

整数 (型変数) の値を文字型変数に代入してしまった場合など、要求される型と異なる型の値を用いた場合に表示されます。

これまでの実習を見る限りでは、適当な型変換を忘れてしまったために起きる場合が多いようです。StrToInt()IntToStr() を付け忘れていないか、確かめてください。

式の結果は Boolean 型でなければなりません

if 文の中で、ただの等号「=」の代わりに「:=」を使っていませんか?

PASCAL 言語では、右辺から左辺に代入する場合は「:=」を用い、両辺が等しいかどうかを比較する場合は「=」を用いることで、両者を使い分けています。

文 が必要な場所に '=' があります

こんな時は代入をあらわすコロン、イコール「:=」がセミコロン、イコール「;=」になっていないか調べてみてください。たいていこれが原因のようです。

Delphi のエディタはフォントのサイズが小さいため、コロンとセミコロンを間違えたのに気づかない、ということがよくあります。そこで、一つの方法としてフォントのサイズを変更するという手があります。やり方は以下のとおり。

  1. Delphi のメニューの中からツールを選びます。
  2. 次にポップアップの中からエディタオプションを選びます。
  3. そして5つあるタブのうち、左から2番目の表示を選びます。
  4. その中にある「サイズ」のところの数字を今より大きな値にする。(おそらく最初は10になっているはずです。12〜14ぐらいだと見やすく、大きすぎないサイズのようです。)

日ごろから見分けづらいと不便を感じている人はぜひ試してみてください。(ただし、大きくしすぎると表示される情報が減ってしまうので程々に。)