Help us understand the problem. What is going on with this article?

Delphi 1~4 でコンソールアプリケーションを作る

はじめに

何を今更な話です。

コンソールアプリケーションについて

正確には Win32 コンソールアプリケーション の事です。Delphi の殆どのバージョンでは、コンソールアプリケーションを

  • [ファイル | 新規作成 | アプリケーション] で開くアプリケーションウィザード
  • [ファイル | 新規作成 | コンソールアプリケーション]

いずれかから作れるのですが、コンソールアプリケーション用のウィザードが実装されたのは Delphi 5 からとなります。
image.png
Delphi 5よりも前のバージョンでもコンソールアプリケーションは作れたのですが、IDE から作ろうとするとちょっと面倒な手順を踏む必要がありました。

■ Delphi 1

Delphi 1 ではコンソールアプリケーションは作れませんし、MS-DOS アプリケーションも作れないのですが、CRT アプリケーションという疑似コンソールアプリケーションが作れます。
image.png

簡単なやり方

[オプション | 環境...] でオプションダイアログを開き、[ギャラリー] の プロジェクトの新規作成で表示 にチェックを入れておくと、
image.png
[ファイル | 新規作成] で CRT アプリケーションを作れるようになります。
image.png

面倒なやり方

  1. 新規にプロジェクトを作成します。
  2. [表示 | プロジェクトマネージャ] でプロジェクトマネージャを表示します。
    image.png
  3. ユニット (画像では Unit1) を選択し、[削除] ボタンを押します。保存を聞かれますが [いいえ] を押します。
    image.png
  4. [表示 | プロジェクトソース] を開きます。

開いたプロジェクトソースは次のようになっているので、

program Project1;

uses
  Forms;

{$R *.RES}

begin
  Application.Run;
end.

となっているのを

program Project1;

uses
  WinCRT;

begin

end.

と書き換えます。これで CRT アプリケーションが作れるようになります。

See also:

■ Delphi 2

ウィザードではコンソールアプリケーションを作れません。
image.png

簡単なやり方

次のファイルを Project1.dpr という名前で好きな場所にコピーします。

Project1.dpr
program Project1;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  SysUtils;

begin

end.

[ファイル | 開く] で上記ファイルを開きます。

面倒なやり方

  1. [ファイル | 新規作成] でアプリケーションを選択します。
  2. [プロジェクト | プロジェクトから削除...] で Unit1 を削除します。
    image.png
  3. 保存を聞かれますが [いいえ] を押します。
    image.png
  4. [表示 | プロジェクトソース] を開きます。

開いたプロジェクトファイルを次のように書き換えます。

Project1.dpr
program Project1;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  SysUtils;

begin

end.

共通

[プロジェクト | オプション...] で [リンカ] タブの コンソールアプリケーションの作成 にチェックを入れておきます。
image.png
uses 句に SysUtils を追加してあります。実際には uses 句がなくてもコンソールアプリケーションとして成立するのですが、別名保存しようとした際や、開き直した時にエラーが発生してしまいます。
image.png

■ Delphi 3

ウィザードではコンソールアプリケーションを作れません。
image.png

簡単なやり方

次のファイルを Project1.dpr という名前で好きな場所にコピーします。

Project1.dpr
program Project1;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  SysUtils;

begin

end.

[ファイル | 開く] で上記ファイルを開きます。

面倒なやり方

  1. [ファイル | 新規作成] でアプリケーションを選択します。
  2. [プロジェクト | プロジェクトから削除...] で Unit1 を削除します。
    image.png
  3. 保存を聞かれますが [いいえ] を押します。
    image.png
  4. [表示 | プロジェクトソース] を開きます。

開いたプロジェクトファイルを次のように書き換えます。

Project1.dpr
program Project1;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  SysUtils;

begin

end.

共通

[プロジェクト | オプション...] で [リンカ] タブの コンソールアプリケーションの作成 にチェックを入れておきます。
image.png
uses 句に SysUtils を追加してあります。実際には uses 句がなくてもコンソールアプリケーションとして成立するのですが、別名保存しようとした際や、開き直した時にエラーが発生してしまいます。
image.png

■ Delphi 4

ウィザードではコンソールアプリケーションを作れません。
image.png

簡単なやり方

次のファイルを Project1.dpr という名前で好きな場所にコピーします。

Project1.dpr
program Project1;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  SysUtils;

begin

end.

[ファイル | 開く] で上記ファイルを開きます。

面倒なやり方

  1. [ファイル | 新規作成] でアプリケーションを選択します。
  2. [プロジェクト | プロジェクトから削除...] で Unit1 を削除します。
    image.png
  3. 保存を聞かれますが [いいえ] を押します。
    image.png
  4. [プロジェクト | ソース表示] でプロジェクトファイルを開きます。プロジェクトマネージャの Project1.exe の部分を右クリックし [ソース表示] を選んで開く事もできます。
    image.png

開いたプロジェクトファイルを次のように書き換えます。

Project1.dpr
program Project1;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  SysUtils;

begin

end.

共通

[プロジェクト | オプション...] で [リンカ] タブの コンソールアプリケーション にチェックを入れておきます。
image.png
uses 句に SysUtils を追加してありますが、 uses 句がなくてもコンソールアプリケーションとして成立します。

コンソールアプリケーションに関連するルーチン

コンソール入出力ルーチンです。

ルーチン 名前空間 説明
Read() System ファイルからデータを読み込みます。
Readln() System ファイルからテキストを 1 行読み込みます。
Write() System ファイルにデータを書き込みます。
Writeln() System ファイルにデータを書き出し、行末マーカーを追加します。
  • Read() / Readln() はファイル変数を省略した場合、グローバル変数 Input が使用され、プロセス標準入力ファイルにアクセスします。
  • Write() / Writeln() はファイル変数を省略した場合、グローバル変数 Output が使用され、プロセス標準出力ファイルにアクセスします。

See also:

おわりに

Delphi 5 以降ならコンソールアプリケーションを作るのに苦労 (?) しなくていいって事ですね。

なお、Delphi 5 がウィザードで生成するコンソールアプリケーションのひな型は次のようなものになります。

Project1.dpr
program Project1;
{$APPTYPE CONSOLE}
uses SysUtils;

begin
  // ここにプログラムコードを書いてください。
end.

最新の 10.4 Sydney だと次のようなコードが生成されます。

Project1.dpr
program Project1;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils;

begin
  try
    { TODO -oUser -cConsole メイン : ここにコードを記述してください }
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
end.

最近の Delphi は macOS 用のコンソールアプリケーションや Linux (Enterprise 版以上) 用のコンソールアプリケーションも作れますヨ。
image.png

See also:

ht_deko
とある熊本の障害復旧(トラブルシューター)
https://ht-deko.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away