【Delphi】Delphi (1) について

# はじめに
**『Delphi』** についての概要です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/29be8f8b-7ba2-3655-6098-3dd1e8354ed4.png)

# 概要
製品概要です。

| 項目 | 説明 |
|:---|:---|
| 製品名 | Delphi |
| コードネーム | Delphi |
| 発売年 | 1995 |
| 発売元 | Borland International |
| ビルドバージョン | 1.0  |
| コンパイラバージョン | 8.0  |
| BDS バージョン | - |
| サポートプラットフォーム | Windows |

## 前バージョンとの違い

:::note
言語的には **『Borland Pascal with Object 7.0』** と **『Turbo Pascal 7.0 for DOS』** が前バージョンに相当します。16bit Windows で動作するという意味では **『Borland Pascal 7.0 for Windows』** が前バージョンに相当します。

**See also:**

 - [Delphi のご先祖を辿る (Qiita)](https://qiita.com/ht_deko/items/b41b0cd45181aec522d4#%E3%81%AF%E3%81%98%E3%82%81%E3%81%AB)
:::

 - 言語としては **Object Pascal** を名乗っている [^1]
 - クラス型が追加された
 - クラスライブラリとして **VCL** (Visual Component Library) が採用された
 - 例外処理が行えるようになった
 - 関数で Result 変数が使えるようになった
 - MS-DOS アプリケーションは作れない
 - 疑似コンソールアプリを作るための `WinCRT` ユニットが付属する
 - コマンドラインコンパイラ `DCC.EXE` が付属する
 - EXE パッカー `W8LOSS.EXE` が付属する
 - **BDE** (Borland Database Engine) が付属する
 - C/S 版には帳票ツール『ReportSmith』が付属する

## その他

 - 元の名前は『Borland AppBuilder』
 - 唯一の 16bit Windows 用 Delphi
 - Delphi の誕生日は 1995/02/14 だが、`DELPHI.EXE` や `DCC.EXE` のタイムスタンプは `1995/02/15 08:00` となっている。これはバグによってリマスターを余儀なくされたためとの事
 - 32bit Windows にインストール可能
 - 64bit Windows にインストール不可
 - 実行形式バイナリ (`*.EXE`) は 32bit Windows でも動作する
 - 1994/10 に発覚した [Pentium FDIV バグ](https://ja.wikipedia.org/wiki/Pentium_FDIV_%E3%83%90%E3%82%B0)に対応。このバージョンのみ、バグ回避を行うコンパイラ指令がデフォルトで ON となっている (`{$U+}`)
 - 早期体験プログラム (EEP) は定員 500 名で抽選、有償で 12,360円 (税込)、最終製品を無償で受け取れるというものだった
 - [『C Magazine』1995 年 10 月号](https://www.amazon.co.jp/dp/B00KLPFPH2)には Delphi の記事があり、体験版が収録されていた
 - 日本語の体験版もあった記憶が...？
 - Delphi と Delphi Client/Server という SKU があった (英語版)
 - 日本では Standard Edition という安価な SKU が用意された (29,800円)
 - 後に日本では英語版の Delphi 相当の『Delphi and Database Tools』という製品が発売された (68,000円)
 - VCL ソースコードは別売
 - 『Delphi and Database Tools』は Delphi 2 ～ 4 のインストール CD 内にも収録されている
 - Delphi 2 ～ 4 インストール CD 内の `DELPHI16\EXTRAS\MANUALS\` には Delphi 1 の言語ガイド (`OBJLANG.PDF`) が含まれている
 - 『Delphi 1.0 Client/Server』は[アンティークソフトウェア](https://cc.embarcadero.com/item/30911
)として無償公開されている
 - 1995 年の殆どの期間で『Windows 3.1』が最新版の Windows でした。『Windows 95』もこの年にリリースされています

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/14c8de88-0c71-5819-44dd-713748b0ca17.png)

| 英語版 | 日本語版 |
|:---|:---|
| (未発売) | Delphi Standard |
| Delphi | Delphi and Database Tools |
| Delphi Client/Server | (未発売) |

:::note
日本語版ではデータベース関連のローカライズが間に合っておらず、「DB 関係のツールがないのに同じ値段では売りにくい」という理由で安価な Standard Edition が設定されたらしい [^2] のですが、結果的にはそれが良い結果に繋がったと思っています。
:::

### Windows 3.1 (16bit Windows) と Delphi (1)

『Delphi (1)』は Windows 3.1 で動作します。『Turbo Pascal for Windows』とは異なり、Windows 3.0 以前では動作しません。

| 項目 | 説明 |
|:---|:---|
| OS | Windows 3.1 |
| CPU | Intel 80386 以上 |
| Memory | 8MB 以上 |
| Storage | 25MB 以上 (最小インストール時)|

Delphi の IDE (`DELPHI.EXE`) を Windows 3.1 で動作させる場合には 386 拡張（エンハンスド）モードである必要があります。『Turbo Pascal for Windows』とは異なり、80286 機のスタンダードモードでは動作しません。

しかしながら、コマンドラインコンパイラ `DCC.EXE` は 1MB 以上のプロテクトメモリさえあれば 80286 機でも動作します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/56d9ef78-de0f-8b01-c509-65ba69a532a4.png)

ちょっとしたアプリケーションならば、80286 機でもコマンドラインコンパイラで作れるのですが、スタンダードモードでは MS-DOS アプリを実行できないので、コンパイルのたびに Windows を終了させて MS-DOS に戻る必要があります。

そして EXE は Windows でしか動作しないので、アプリケーションを試すにはまた Windows を起動しなくてはなりません...面倒ですね。

#### Windows 3.x のモード

Windows 3.x には CPU に応じて次のようなモードがありました。

| Windows モード | スイッチ | CPU | CPU モード| メモリ |
|:---|:---:|:---|:---|:---|
| リアルモード | `/r` | 8086 以上 | ・8086/8088<br>・リアルモード (286)<br>・仮想 86 モード (386) | EMS |
| スタンダードモード | `/s` | 80286 以上 | プロテクトモード (286) | XMS |
| エンハンスドモード | `/3` | 80386 以上 | プロテクトモード (386) | XMS + <br>仮想メモリ|

モードは Windows 起動時に自動で最適なものが選択されますが、`win.com` にスイッチを付けてモードを強制する事もできました。

:::note
Windows 3.1 ではリアルモードが廃止されています。
:::

**See also**

 - [Microsoft Windows 3.x (Wiki)](https://ja.wikipedia.org/wiki/Microsoft_Windows_3.x)
 - [リアルモード (Wiki)](https://ja.wikipedia.org/wiki/%E3%83%AA%E3%82%A2%E3%83%AB%E3%83%A2%E3%83%BC%E3%83%89)
 - [プロテクトモード (Wiki)](https://ja.wikipedia.org/wiki/%E3%83%97%E3%83%AD%E3%83%86%E3%82%AF%E3%83%88%E3%83%A2%E3%83%BC%E3%83%89)
 - [EMS (Wikipedia)](https://ja.wikipedia.org/wiki/Expanded_Memory_Specification)
 - [XMS (Wikipedia)](https://ja.wikipedia.org/wiki/XMS)
 - [DPMI (Wikipedia)](https://ja.wikipedia.org/wiki/DPMI)
 - [VCPI (Wikipedia)](https://ja.wikipedia.org/wiki/VCPI)

### 32bit / 64bit Windows と Delphi (1)

Delphi (1) は 32bit Windows にそのままインストールできます。Vista 以降は色々と面倒くさい事があるので、Windows XP 以前へインストールするのがいいかと思います

64bit Windows では 16bit アプリケーションが動作しないので、64bit Windows には**そのままでは**インストールできません。

Delphi (1) の英語版は『DOSBox(-X)』上の Windows 3.1 (日本語版でも可) で動作させる事ができますが、Delphi (1) の日本語版はインストール時や IDE 起動時にエラーが出ます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/ae6fac24-af26-b022-33a9-fccb990254e6.png)


| OS | Delphi | 仮想環境 |
|:---|:---|:---|
| 64bit Windows | Delphi 日本語版 / 英語版 | OTVDM (WINEVDM) |
| 32bit Windows | Delphi 日本語版 / 英語版 | 任意の VM |
| Windows 3.1 | Delphi 英語版 | DOSBox-X |
| Windows 3.1 | Delphi 日本語版 / 英語版 | VirtualBox<br>VMware |
| Windows 3.1 | Delphi 日本語版 / 英語版 | Neko Project 21/W (PC-98) |

:::note
Windows 3.1 での動作にこだわらないのなら VM の Windows XP (32bit) へインストールするのが最も簡単で便利です。
:::

**See also:**

 - [Delphi 1.0 Client/Server が無償公開されたので Windows 10 (64bit) / 11 にインストールしてみる (Qiita)](https://qiita.com/ht_deko/items/a65e0950b906d28ccb5f)
 - [Delphi 1.0 Client/Server を Windows 7 の XP Mode にインストールしてみる (Qiita)](https://qiita.com/ht_deko/items/e02a7b42ef65baa5d175)


# おわりに

始まりの Delphi です。書籍も多く出ていて、基本的な言語の構文を覚えるのなら Delphi 1 のもので充分な事もあります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/67ff9b67-91f7-6b6e-6c94-750918685363.png)&nbsp;![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/2c23138b-83a6-93f2-e6a4-1f77306522e7.png)&nbsp;![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/c3e6948a-b2d5-567c-2a69-b8cdc567c44a.png)

 - [Pascal / Turbo Pascal / Delphi 関連の書籍を読んでみる (まとめ) (Qiita)](https://qiita.com/ht_deko/items/34bbcdea27ce224079e0)

反面、製品マニュアルには『Turbo Pascal』や『標準 Pascal』に関する情報は載っていないので、効率のいいコードを書きたいのならそれらの情報も集めた方がいいと思います。


**See also:**

 - [Delphi タイムワープ – 1995 年と Delphi 神話の起源 (blogs.embarcadero.com)](https://blogs.embarcadero.com/ja/delphi-timewarp-1995-and-delphis-mythical-origins-ja/)
 - [Delphi 1～4 でコンソールアプリケーションを作る (Qiita)](https://qiita.com/ht_deko/items/55d583a8a9cc37aea40e)
 - [Delphi と Windows の呼び出し規約 (Qiita)](https://qiita.com/ht_deko/items/840c96166b8f175826ef)
 - [Delphi で基本的な図形を描画する (Qiita)](https://qiita.com/ht_deko/items/8d039c9541730d4571ce)
 - [Delphi のご先祖を辿る (Qiita)](https://qiita.com/ht_deko/items/b41b0cd45181aec522d4)
 - [Pascal へのオブジェクト指向拡張の歴史と Delphi (Qiita)](https://qiita.com/ht_deko/items/ff2d90c9174290583377)
 - ['Look Back' on C# - BDL2046 (Youtube)](https://www.youtube.com/watch?v=5hiJElu8jpo)

# 索引
[ [↑ 目次へ](https://qiita.com/ht_deko/items/eb96629d705542e3a980) ]  [ [→ Delphi 2](https://qiita.com/ht_deko/items/4c663be138f24f11f7a5) ]

[^1]: 最初の『Object Pascal』実装は Apple 社によるものです。
[^2]: とは[大野さんの談](https://x.com/mohno/status/1862885935358349712)。