# Delphi 1~4 でコンソールアプリケーションを作る --- tags: Delphi programming Pascal objectpascal created_at: 2020-10-14 updated_at: 2020-10-14 --- # はじめに 何を今更な話です。 # コンソールアプリケーションについて 正確には **Win32 コンソールアプリケーション** の事です。**Delphi** の殆どのバージョンでは、コンソールアプリケーションを - [ファイル | 新規作成 | アプリケーション] で開くアプリケーションウィザード - [ファイル | 新規作成 | コンソールアプリケーション] いずれかから作れるのですが、コンソールアプリケーション用のウィザードが実装されたのは **Delphi 5** からとなります。 ![image.png](./images/c13966b2-cdc7-a3ed-ead6-4798bcdd88b1.png) **Delphi 5**よりも前のバージョンでもコンソールアプリケーションは作れたのですが、IDE から作ろうとするとちょっと面倒な手順を踏む必要がありました。 ## ■ Delphi 1 **Delphi 1** ではコンソールアプリケーションは作れませんし、MS-DOS アプリケーションも作れないのですが、**CRT アプリケーション**という疑似コンソールアプリケーションが作れます。 ![image.png](./images/aa2650ea-bd9b-715e-3b64-c8a8d9d74a52.png) ### 簡単なやり方 [オプション | 環境...] でオプションダイアログを開き、[ギャラリー] の `プロジェクトの新規作成で表示` にチェックを入れておくと、 ![image.png](./images/dbde4bcb-d92d-81dc-0876-58bbba43155e.png) [ファイル | 新規作成] で CRT アプリケーションを作れるようになります。 ![image.png](./images/4a7ab213-47d8-d132-14c3-df7bd59df682.png) ### 面倒なやり方 1. 新規にプロジェクトを作成します。 2. [表示 | プロジェクトマネージャ] でプロジェクトマネージャを表示します。
![image.png](./images/cbefafd5-dba2-abfa-923c-3a251beba92d.png) 3. ユニット (画像では Unit1) を選択し、[削除] ボタンを押します。保存を聞かれますが [いいえ] を押します。
![image.png](./images/147c581d-98d6-d046-5359-ab23306134ed.png) 4. [表示 | プロジェクトソース] を開きます。 開いたプロジェクトソースは次のようになっているので、 ```pascal program Project1; uses Forms; {$R *.RES} begin Application.Run; end. ``` となっているのを ```pascal program Project1; uses WinCRT; begin end. ``` と書き換えます。これで CRT アプリケーションが作れるようになります。 **See also:** - [Delphi で Pascal-S をコンパイルする (16bit 版 Delphi)](./7b8db26fb7ce91542dd9.md) - [Delphi 1.0 Client/Server が無償公開されたので Windows 7 の XP Mode にインストールしてみる (Qiita)](./e02a7b42ef65baa5d175.md) - [<3> Macintosh 用 Pascal のオブジェクト指向拡張 (Pascal へのオブジェクト指向拡張の歴史と Delphi) (Qiita)](./cd245180363e1911afa7.md) - [Macintosh Programmer's Workshop (MPW) Object Pascal の簡単な使い方 (Qiita)](./de6838acd1d22722b674.md) ## ■ Delphi 2 ウィザードではコンソールアプリケーションを作れません。 ![image.png](./images/7b64d26c-6329-d865-ea9a-6d63997ccf62.png) ### 簡単なやり方 次のファイルを `Project1.dpr` という名前で好きな場所にコピーします。 ```pascal:Project1.dpr program Project1; {$APPTYPE CONSOLE} {$R *.res} uses SysUtils; begin end. ``` [ファイル | 開く] で上記ファイルを開きます。 ### 面倒なやり方 1. [ファイル | 新規作成] でアプリケーションを選択します。 2. [プロジェクト | プロジェクトから削除...] で Unit1 を削除します。
![image.png](./images/8e47674b-085a-c47a-7881-dc2d0894f125.png) 3. 保存を聞かれますが [いいえ] を押します。
![image.png](./images/8c823389-35a6-f177-e89d-d8593feaa038.png) 4. [表示 | プロジェクトソース] を開きます。 開いたプロジェクトファイルを次のように書き換えます。 ```pascal:Project1.dpr program Project1; {$APPTYPE CONSOLE} {$R *.res} uses SysUtils; begin end. ``` ### 共通 [プロジェクト | オプション...] で [リンカ] タブの `コンソールアプリケーションの作成` にチェックを入れておきます。 ![image.png](./images/87cf0b8f-553f-09dd-d058-36e173181e16.png) **uses** 句に `SysUtils` を追加してあります。実際には **uses** 句がなくてもコンソールアプリケーションとして成立するのですが、別名保存しようとした際や、開き直した時にエラーが発生してしまいます。 ![image.png](./images/a7201ec3-ae5a-df4f-ed51-ee221fd599e7.png) ## ■ Delphi 3 ウィザードではコンソールアプリケーションを作れません。 ![image.png](./images/aa2b2a44-854f-458b-f9e4-40b0081965bc.png) ### 簡単なやり方 次のファイルを `Project1.dpr` という名前で好きな場所にコピーします。 ```pascal:Project1.dpr program Project1; {$APPTYPE CONSOLE} {$R *.res} uses SysUtils; begin end. ``` [ファイル | 開く] で上記ファイルを開きます。 ### 面倒なやり方 1. [ファイル | 新規作成] でアプリケーションを選択します。 2. [プロジェクト | プロジェクトから削除...] で Unit1 を削除します。
![image.png](./images/8e47674b-085a-c47a-7881-dc2d0894f125.png) 3. 保存を聞かれますが [いいえ] を押します。
![image.png](./images/8c823389-35a6-f177-e89d-d8593feaa038.png) 4. [表示 | プロジェクトソース] を開きます。 開いたプロジェクトファイルを次のように書き換えます。 ```pascal:Project1.dpr program Project1; {$APPTYPE CONSOLE} {$R *.res} uses SysUtils; begin end. ``` ### 共通 [プロジェクト | オプション...] で [リンカ] タブの `コンソールアプリケーションの作成` にチェックを入れておきます。 ![image.png](./images/8a67c1c3-7d51-1380-75cd-911e68e608a6.png) **uses** 句に `SysUtils` を追加してあります。実際には **uses** 句がなくてもコンソールアプリケーションとして成立するのですが、別名保存しようとした際や、開き直した時にエラーが発生してしまいます。 ![image.png](./images/a7201ec3-ae5a-df4f-ed51-ee221fd599e7.png) ## ■ Delphi 4 ウィザードではコンソールアプリケーションを作れません。 ![image.png](./images/9f03feeb-2368-72d5-3eec-e1ee993c7174.png) ### 簡単なやり方 次のファイルを `Project1.dpr` という名前で好きな場所にコピーします。 ```pascal:Project1.dpr program Project1; {$APPTYPE CONSOLE} {$R *.res} uses SysUtils; begin end. ``` [ファイル | 開く] で上記ファイルを開きます。 ### 面倒なやり方 1. [ファイル | 新規作成] でアプリケーションを選択します。 2. [プロジェクト | プロジェクトから削除...] で Unit1 を削除します。
![image.png](./images/8e47674b-085a-c47a-7881-dc2d0894f125.png) 3. 保存を聞かれますが [いいえ] を押します。
![image.png](./images/8c823389-35a6-f177-e89d-d8593feaa038.png) 4. [プロジェクト | ソース表示] でプロジェクトファイルを開きます。プロジェクトマネージャの `Project1.exe` の部分を右クリックし [ソース表示] を選んで開く事もできます。
![image.png](./images/afc8d885-fd34-0538-1366-a5d2b04586b8.png) 開いたプロジェクトファイルを次のように書き換えます。 ```pascal:Project1.dpr program Project1; {$APPTYPE CONSOLE} {$R *.res} uses SysUtils; begin end. ``` ### 共通 [プロジェクト | オプション...] で [リンカ] タブの `コンソールアプリケーション` にチェックを入れておきます。 ![image.png](./images/e126bf0a-f97f-02cf-3356-20e6d40e1810.png) **uses** 句に `SysUtils` を追加してありますが、 **uses** 句がなくてもコンソールアプリケーションとして成立します。 ## コンソールアプリケーションに関連するルーチン コンソール入出力ルーチンです。 | ルーチン | 名前空間 | 説明 | |:---|:---|:---| | [Read()](http://docwiki.embarcadero.com/Libraries/Sydney/ja/System.Read) | [System](http://docwiki.embarcadero.com/Libraries/Sydney/ja/System) | ファイルからデータを読み込みます。 | | [Readln()](http://docwiki.embarcadero.com/Libraries/Sydney/ja/System/Readln) | [System](http://docwiki.embarcadero.com/Libraries/Sydney/ja/System) | ファイルからテキストを 1 行読み込みます。 | | [Write()](http://docwiki.embarcadero.com/Libraries/Sydney/ja/System.Write) | [System](http://docwiki.embarcadero.com/Libraries/Sydney/ja/System) | ファイルにデータを書き込みます。 | | [Writeln()](http://docwiki.embarcadero.com/Libraries/Sydney/ja/System/Writeln) | [System](http://docwiki.embarcadero.com/Libraries/Sydney/ja/System) | ファイルにデータを書き出し、行末マーカーを追加します。 | - Read() / Readln() はファイル変数を省略した場合、グローバル変数 [Input](http://docwiki.embarcadero.com/Libraries/ja/System.Input) が使用され、プロセス標準入力ファイルにアクセスします。 - Write() / Writeln() はファイル変数を省略した場合、グローバル変数 [Output](http://docwiki.embarcadero.com/Libraries/ja/System.Output) が使用され、プロセス標準出力ファイルにアクセスします。 **See also:** - [<12> テキストファイルの入出力 (標準 Pascal 範囲内での Delphi 入門) (Qiita)](./391d6c1a53c7aaa3416f.md) # おわりに **Delphi 5** 以降ならコンソールアプリケーションを作るのに苦労 (?) しなくていいって事ですね。 なお、**Delphi 5** がウィザードで生成するコンソールアプリケーションのひな型は次のようなものになります。 ```pascal:Project1.dpr program Project1; {$APPTYPE CONSOLE} uses SysUtils; begin // ここにプログラムコードを書いてください。 end. ``` 最新の **10.4 Sydney** だと次のようなコードが生成されます。 ```pascal: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](./images/1734fe3b-352c-11d2-bd2c-70404163b463.png) **See also:** - [コンソールアプリケーション (DocWiki)](http://docwiki.embarcadero.com/RADStudio/ja/%E3%82%B3%E3%83%B3%E3%82%BD%E3%83%BC%E3%83%AB_%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3) - [Application の種類(Delphi)(DocWiki)](http://docwiki.embarcadero.com/RADStudio/ja/Application_%E3%81%AE%E7%A8%AE%E9%A1%9E%EF%BC%88Delphi%EF%BC%89) - [macOS で Hello World コンソール アプリケーションを構築する (DocWiki)](http://docwiki.embarcadero.com/RADStudio/ja/MacOS_%E3%81%A7_Hello_World_%E3%82%B3%E3%83%B3%E3%82%BD%E3%83%BC%E3%83%AB_%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E6%A7%8B%E7%AF%89%E3%81%99%E3%82%8B) - [Delphi で Hello,world. (コンソールアプリケーション) (Qiita)](./aaf8f3fd705a5dba98a5.md) - [Delphi で最少のソースコードを書いてみる (Qiita)](./c81a8bacd7e299c45340.md) - [Delphi のコンソールアプリケーションで文字色変更と座標指定をしたい! (Qiita)](./e0a12036de0596c9cbae.md) - [Delphi で PL/0 をコンパイルする (Qiita)](./a3080ec5a95e320eade1.md)