『Delphi』で「Hello World !」 – 『Delphi』入門

「『Delphi』入門」の【大もくじ】へ戻る

初心者の入門プログラムと言えば、「Hello World !」が定番ですね。


「Hello World !」

『Delphi』で「Hello World !」と表示させるプログラムを組みます。
と、言っても、「Hello World !」にはいくつかのパターンがあります。
ここでは、入門書ということで、それぞれを列挙して少しだけ解説したいと思います。

その前にちょっと覚えておいて欲しいこと

用語などをいちいち全部その都度説明していたのでは、なかなか先に進まないので
多くは説明を省きます。
どうしても必要な部分だけを説明していきます。

文字と行の扱い

『Delphi』では、大文字と小文字を区別しません。どちらで記述しても同じです。
ですが、慣例的に頭文字は大文字で記述するようです。
以下で、「Hello World !」と表示させるプログラムを記述しますが、
表示したい内容やデータの内容は大文字と小文字を区別させられます。
(それらも区別しないようにも作れるが、少し面倒で中級以上のレベルになる)

もうひとつ。
『Delphi』では、行の最後に「;」セミコロンを記述します。
このセミコロンがひとつでも抜けているとエラーを起こしてそのプログラムは実行できません。
間違いやすいのが見た目の似ている「:」コロンです。
このふたつは全く違う意味を持ちますので注意してください。
そして、逆にセミコロンが要らないものもありますし、
代わりに「.」ドットを記述する部分もあります。
今はまだ説明を省きますが、なんとなく覚えておいてください。

記述ミスを警告してくれる

そして、『Embarcadero RAD Studio』の『Delphi』開発環境では、
コードを記述していると文字の下に赤い波線が表示されることがあります。
それは、その記述がそのままだとエラーだということを暗示しています。
その時のエラーは、スペルミスだったり、必要な記号が抜けていたり、
他の行と矛盾していたりします。
開発者はその修正が必要なのですが、
必ずしも赤い波線が表示されている部分が要因とは限りません。
別の部分に間違いが潜んでいることもあります。

ソースコードの保存

あと、プログラムを記述したら保存しないといけません。というか、保存するでしょう。
『Delphi』では、ひとつのプログラムでも、ふたつのファイルを保存しないといけません。
「プロジェクトグループ」の中に「プロジェクト」があって、
その「プロジェクト」の中に「ユニット」があるという構造になっていて、
その「ユニット」の中にプログラムのソースコードを記述することになっています。
この構造は、新規で作成するときに自動的に作られます。
詳しいことは私もまだ分かっていないのですけれど、
ソースコードの「ユニット」だけ保存して「プロジェクト」を保存しないと、
実行できなくなってしまいます。
「ユニット」と「プロジェクト」を保存しないといけません。
(「プロジェクトグループ」は保存しなくてもいいのだろうか?)
なので、メニューの「ファイル」→「すべて保存」で保存するのが正しいようです。
逆に開くときには、「プロジェクト」を開かないといけないらしく、
拡張子「.dproj」がその「プロジェクト」ファイルになります。
「ファイル」→「開く」でも、
「ファイル」→「プロジェクトを開く」のどちらからでも
正しい「プロジェクト」ファイルを選択すればいいのですけれど、
選択ダイアログには、別の拡張子のファイルも並んで表示されているので注意が必要です。

コンソールに「Hello World !」と表示する

このパターンも、ウインドウに表示するパターンと同じくらい多い、
入門者向けのプログラムになります。
ですが、一部の言語と違って『Delphi』では簡単な1行のプログラムにはなりません。

「コンソール」というのは大雑把にいうと、コンピューターが開発者と対話する場所です。
「対話」と言っても、人工知能と会話するわけではなく、
プログラムの結果や進捗を表示する場所です。
したがって、普通はディスプレイ(モニターとも呼ぶ)に表示されます。
しかし、ウインドウという概念はなく、ただ文字や数字を羅列するだけの場所です。
「CUI」が主流だった頃の表示方式なのですが、
「GUI」が主流となっている現代でもまだ使われます。
現在の一般的なパソコンでの「コンソール」はGUIの上で動かす都合上、
「コンソール」自体がウインドウに入っているので紛らわしいですが、
プログラミングを学習していけば、違いがなんとなく分かってきます。

この「コンソール」だけで動くプログラムを「コンソールアプリケーション」といいますが、
GUIを使うプログラムでも、「コンソール」に進捗などを表示することがあります。
とりあえずここでは、「コンソールアプリケーション」を作ってみましょう。

  1. まず、『Embarcadero RAD Studio 』の『Delphi』を起動します。
  2. ウインドウ上部のツールバーから「ファイル」→「新規作成」→「コンソールアプリケーション」と選択します。

  3. 最低限のコードが自動的に作られ、画面の真ん中にソースコードが表示されます。
    「コンソールアプリケーション」の場合は編集できるウインドウがないので、
    最初はコードの画面になります。

  4. そのコードの11行目から16行目
      try
        { TODO -oUser -cConsole メイン : ここにコードを記述してください }
      except
        on E: Exception do
          Writeln(E.ClassName, ': ', E.Message);
      end;
    を削除します。本当は意味がある文なのですが、今回は省きます。

  5. 10行目の
    begin
    のあとに、1行追加([return]キーを押す)して
      Writeln('Hello World !');
    と記述します。

  6. 「デバッガを使わずに実行」ボタンを押します。再生マークのような小さなボタンです。

  7. すると、一瞬何かの表示があったあと、それは消えて元に戻ってしまいます。
    「コンソールアプリケーション」は、プログラムが終了すると自動的に閉じてしまうので、
    ちゃんと表示されていたのに、一瞬すぎて見えなかっただけなんです。
  8. では、ちゃんと見えるようにプログラムを修正しましょう。
    先程追加した11行目の
      Writeln('Hello World !');
    のあとに、1行追加([return]キーを押す)して
      readln;
    と記述します。

  9. もう一度、「デバッガを使わずに実行」ボタンを押します。
    するとウインドウが開き、その中に「Hello World !」と表示されたはずです。
    そして、今度はちゃんと閉じずに開いたままです。

  10. これで完成です。
    • そのウインドウを「☓」をクリックして
      ウインドウを閉じるとプログラムは終了します。
      あるいは、[Enter]キーを押しても終了します。

では、プログラムの記述を少し解説しましょう。

Writeln

というのは関数のひとつです。
その後ろに括弧で閉じてパラメーターを渡します。
この関数は、コンソールに表示するという指示のようなもので、
その表示する内容をパラメーターとして記述します。
今回は、

'Hello World !'

がパラメーターです。

そして、

  readln;

これはコンソールで文字列の入力を待つという指示のようなもので、
[Enter]キーを押されるまで待機します。
従って、この待機中はキーボードを打つとそのままコンソールに書き込まれます。
「readln」も関数なのですが、今回は括弧が付いていませんしパラメーターもありません。
「readln」は、パラメーターを省略できるため、
パラメーターが必要ない場合は、括弧記号も省略できるのです。

ウインドウに「Hello World !」と表示する

  1. まず、『Embarcadero RAD Studio 』の『Delphi』を起動します。
  2. ウインドウ上部のツールバーから「ファイル」→「新規作成」→「Windows VCL アプリケーション」と選択します。

  3. すると、まんなかに「Form1」というウインドウが出現します。
    (数字は自動で振られるので画像では「Form2」になっている)

  4. ウインドウ右下の方にある「パレット」から「TLabel」を見つけます。
    (虫眼鏡のすぐ左側に検索用の入力領域があるので、そこに「TLabel」あるいは、「Label」と入力すれば絞り込まれるので簡単に見つかるし、「Lab」辺りまで打ち込むと一覧に現れる)

  5. その「TLabel」をまんなかの「Form」のウインドウ内の適当な位置に
    ドラッグ&ドロップします。

  6. 「Form1」のウインドウをクリックして選択状態にします。
    (その前にドラッグ&ドロップした「Label1」の外の領域をクリック)

  7. ウインドウ左下の「オブジェクトインスペクタ」の「イベント」をクリックします。
    (選択状態になると文字が青くなる)



  8. 「OnCreate」を見つけます。
    (虫眼鏡のすぐ左側に検索用の入力領域があるので、そこに「OnCreate」と入力すれば絞り込まれるので簡単に見つかるし、「OnC」辺りまで打ち込むと一覧に現れる)

  9. 「OnCreate」の右側の入力欄に任意の名前を入力して[Enter]キーを押す。
    (例えば、「Hello」)

  10. すると、自動的にコードの画面になって、
    今入力した名前(Hello)が入って必要な文が作成されています。

  11. 一旦、スクロールさせて上の方のコードを見てみましょう。
    先程ドラッグ&ドロップで入れた「Label1」が入った文が自動的に作られています。

    この「Label1」の数字は、順番に振られていくので2番目に入れると「Label2」になりす。
  12. そうしたら、その「Label1」を使って、1行追加します。
    場所は、27行目の
    begin;
    と、29行目の
    end;
    の間の28行目です。
    今はまだ、空白の行になっていますね。
    (なっていなければ、[Enter]キーで1行入れる)

  13. その28行目に
      Label1.Caption := 'Hello World !';
    と記述します。
    (画像では、行末のセミコロンの後ろに縦棒が見えるが、それはカーソルなので何も入れない)

  14. これで、今回のプログラムは完成です。
    「デバッガを使わずに実行」ボタンを押します。

    今作ったアプリケーションが開いて、ウインドウの中に「Hello World !」と表示されます。
    もし、エラーが発生したりして上手く完成しない場合は、最初からよく見直してください。
    どうしても、間違いが見つからない場合、後述していますが
    重複しそうなファイルをリネームしてみてください。

今回、説明するのは、28行目に記述した、

  Label1.Caption := 'Hello World !';

です。

「Label1」というのは、自動的に付けられた名前ですが、ソースコードの上の方に書いてありました。
その行は、

  Label1: TLabl;

と記述されていました。
これは、「Label1」という名前は、「TLabel」ですよ、と宣言している文です。
「TLabel」というのは、文字列を表示する領域です。
宣言する場合は、名前のすぐあとに「:」コロンを記述します。
文末の「;」セミコロンとは意味が違いますので注意してください。

説明を28行目に戻しましょう。
「Label1」の後ろの「.Caption」というのは、
この場合、「Label1」の表示する内容を扱うときに記述します。
いくつかの言語では、「Label1」という名前だけで内容を扱えることがありますが、
『Delphi』の「TLabl」では、「Label1.Caption」と綴らないといけないのです。
しかもこれ、「Windows VCL アプリケーション」の場合は「.Caption」ですが、
「マルチデバイスアプリケーション」の場合は、「.Text」なんですね。
紛らわしいので特に注意してください。
私は、そのことに気付くまで随分と時間を労しました。

次の説明に行きます。
「Label1.Caption」に「Hello World !」という文字列を代入しているのですが、
『Delphi』の場合の代入記号は「:=」(コロン、イコール)です。
他の多くの言語では、代入は「=」記号だけでいいのですが『Delphi』では違うのです。
では「=」とすると何なのかですが、等価の比較演算子になります。
つまり、「:=」の場合、その右側の内容を左側に代入するのですが、
「=」の場合、左右の内容が一致すれば「True」(真)を返し、
一致しなければ「False」(偽)を返すということになります。
従って、「:」を忘れるとバグになります。特に注意してください。

その次の説明ですが、他の言語を学んだ人は既に分かっていると思いますが、
文字列を表す場合には、「’」シングルクォートで囲みます。
例えば、「’」で囲むと

'Label1'

それは文字列を表すので「Label1」という内容になりますが、「’」がないと

Label1

とだけ記述すると、それは変数などの名前を表してしまいます。
そういうバグもありますので、注意してください。

他の多くの言語では「”」ダブルクォートが同じように文字列を囲うときに使われますが、
『Delphi』では使えません。
試しに、「’」の代わりに「”」で記述してみましたが、エラーになってしまいました。
「”」は、どういうときに使うのか、何にも使われないのか、
今の私にはまだ分かりません。( ̄◇ ̄;)

自動的に作られるファイルがあるとエラーになる

私が何度かプログラムを作って実行していると、
ソースコードに間違いがどうしても見つからないのに、
エラーが発生して完成しないことがありました。
どうやら、この『Embarcadero RAD Studio 』の『Delphi』という開発環境は、
自動的に作られるファイルと同名のものが既に存在している場合、
上書きしないでエラーを発する仕様のようです。
(設定で上書きするように変えられるのかもしれないが)
なので、
「PC」→「ドキュメント」→「Embarcadero」→「Studio」→「Projects」→「Win32」→「Debug」
や、
「PC」→「ドキュメント」→「Embarcadero」→「Studio」→「Projects」 などのフォルダーに、重複しそうなファイルがある場合は、それをリネームしてみてください。
(いきなり削除してしまうと、必要だったのに〜ということにもなりかねない)
すると、エラーが発生せずに完成することもありました。
変化が見られずエラーが続く場合は、リネームしたファイル名を元に戻しましょう。

初心者には意外と面倒な『Delphi』

(今回のプログラミングを振り返ってみる)

取り敢えず、ウインドウに「Hello World !」と表示したいのですが・・・
多くの言語は、1〜3行くらいのコードでできるのですが、『Delphi』はそうは行かないらしい。
たかが、これっぽっちの「Hello World !」でも、
コードを手打ちするだけでなく、あっちこっちから部品を持ってこないといけないのです。
意外と手こずりました。
なにしろ、ググってもそれらしい記事は見当たらなかったし、
ヘルプ見ても何が何やらさっぱり分からんし。( ̄◇ ̄;)

少し弄り回しても分からないので、最終手段!
teratail」で質問してみました。( ̄▽ ̄)
教えてもらっても、そのワードが何なのか分からず、理解するのに時間がかかりましたね〜。
ほんと、初心者には厳しい『Delphi』。


「『Delphi』入門」の【大もくじ】へ戻る


お気に召しましたら、一票(ワンクリック)下さい。ランキングに参加しておりますゆえ。


人気ブログランキング

インターネット・コンピュータランキング

開発・運営ランキング



コメントを残す

メールアドレスが公開されることはありません。