【Delphi】Delphi 8 について

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

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/d7d35672-e180-5e89-1f4c-f101053f1ef4.png)

# 概要
製品概要です。

| 項目 | 説明 |
|:---|:---|
| 製品名 | Delphi 8|
| コードネーム | Octane |
| 発売年 | 2003 |
| 発売元 | Borland Software Corporation |
| ビルドバージョン | 8.0  |
| コンパイラバージョン | 16.0  |
| BDS バージョン | 2.0 |
| サポートプラットフォーム | Windows (.NET) |

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

 - .NET Framework 用 (CIL) コンパイラとなった (<font color="crimson">Win32 API ベースではない</font>)
 - IDE が刷新された (**Galileo IDE**)
 - デスクトップレイアウトで `Classic Undocked` を選ぶ事で旧来のような分離型のレイアウトにする事が可能
 - [ツール | オプション] でフォームデザイナの埋め込みを解除すると旧来のような分離型のフォームデザイナを使う事ができる
 - コンポーネントアイコンに 16×16 / 24×24 / 32×32 が使えるようになった
 - ソースファイルを UTF-8 で保存する事が可能になった
 - Windows フォームアプリケーション (Windows Forms) と VCL フォームアプリケーション (VCL.NET: VCL を Windows Forms 上に移植) 対応のフォームデザイナ 
 - リファクタリングができるようになった
 - ユニット名前空間が使えるようになった
 - 拡張識別子が使えるようになった。例えば `識別子.予約語と同じ名前` は許容されるようになった
 - 型 (クラス) のネストが可能になった 
 - カスタム属性がサポートされるようになった
 - スタティックなクラスデータ (クラスプロパティなど)
 - 値型のサポート
 - 高度なレコード型 (Advanced Record) がサポートされた
 - **sealed** クラス
 - **final** メソッド
 - 可視性指定子 **strict protected** と **strict private** が使えるようになった
 - **BDP** (Borland Data Provider) for ADO.NET
 - BDE.NET
 - dbExpress.NET
 - object 型はない
 - CLX フォームアプリケーションはサポートされない
 - XML サポートはない
 - WebBroker は使えない
 - 『IntraWeb for .NET』は付属しない
 - レポートツールとして『RaveReport』が使える
 - 何もかもが違う！！

## その他

 - 初の .NET Framework 用 Delphi
 - Galileo IDE を採用した最初の Delphi
 - コマンドラインコンパイラは `DCCIL.EXE`
 - BDS (Borland Developer Studio) バージョンが 2.0 になっているが、1.0 は『C# Builder』
 - Win32 開発用に『Delphi 7.1』が付属する
 - ガリレオ IDE の拡張用に Delphi 8 の Win32 版コンパイラ (`DCC32.EXE`) が用意された [^1]
 - 従来の Delphi は Windows (Win32) のコントロールを VCL (for Win32) としてラッピングしたものだった。.NET Framework においては Windows Forms がネイティブであり、VCL.NET は Windows Forms 上に Win32 のコントロールを模倣したものなので、これはラッパーのラッパーという事になる
 - IDE 環境設定のレジストリエントリは `HKEY_CURRENT_USER\Software\Borland` にある
 - レジストリを変更する事によって、デフォルトのファイルエンコードを UTF-8 に変更可能
 - インストールに .NET Framework 1.1 が必要になった
 - <font color="crimson">.NET Framework 1.1 Service Pack 1 をインストールすると動作不良を起こす</font>

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/2dee162b-4124-dd34-de64-045603ded3a9.png)

:::note
画像は『Delphi 2006 for .NET』のものです [^2]。
:::

### .NET Framework 1.1 Service Pack 適用時の問題

.NET Framework 1.1 に Service Pack 1 を適用すると Delphi 8 は動作不良を起こします。

.NET Framework 1.1 Service Pack 適用時の問題の公式な解決方法は SP をアンインストールして製品付属の無印をインストールし直す事だったと思います。

 - [.NET Framework 1.1 Service Pack 適用時の問題について (Internet Archive: borland.co.jp)](https://web.archive.org/web/20060214192141/http://www.borland.co.jp/delphi/devsupport/d8issues.html#0)
 - [Shotgun fix for .NET 1.1 SP1... (Internet Archive: The Oracle at Delphi)](https://web.archive.org/web/20060107030748/http://blogs.borland.com/abauer/archive/2004/09/07/1245.aspx)


:::note
サードパーティコンポーネントやライブラリのソースコードをすべて持っているのであれば、こちらのパッチを使う事もできます。

 - [ID: 22909, Delphi 8 Professional Update 3 - Public Beta (CodeCentral)](https://cc.embarcadero.com/Item/22909)
 - [ID: 22908, Delphi 8 Enterprise Update 3 - Public Beta (CodeCentral)](https://cc.embarcadero.com/Item/22908)
 - [ID: 22907, Delphi 8 Architect Update 3 - Public Beta (CodeCentral)](https://cc.embarcadero.com/Item/22907)
:::


# 次に

ついでなので、.NET framework 版 Delphi の系譜についてすべて列挙します。

## Delphi 2005 for .NET

『Delphi 2005』付属の .NET コンパイラ。

| 項目 | 説明 |
|:---|:---|
| 製品名 | Delphi 2005 for .NET |
| 発売年 | 2004 |
| 発売元 | Borland Software Corporation |
| ビルドバージョン | 9.0  |
| コンパイラバージョン | 17.0  |
| BDS バージョン | 3.0 |
| サポートプラットフォーム | Windows (.NET) |

:::note
『Delphi 2005』は

 - Delphi for Win32
 - Delphi for .NET
 - C# Builder

がセットになった製品です。
:::

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

 - 多次元動的配列

### その他

 - 『Delphi 2005』は『Borland Developer Studio 2005』という名前にすべきだったと思います。スイート製品に既存の単体製品の名前を付けたらダメでしょ！[^3]

## Delphi 2006 for .NET / Turbo Delphi for .NET

『Borland Developer Studio 2006』付属の .NET コンパイラと、単体製品である『Turbo Delphi for .NET』です。

| 項目 | 説明 |
|:---|:---|
| 製品名 | Delphi 2006 for .NET / Turbo Delphi .NET |
| 発売年 | 2005 |
| 発売元 | Borland Software Corporation |
| ビルドバージョン | 10.0  |
| コンパイラバージョン | 18.0  |
| BDS バージョン | 4.0 |
| サポートプラットフォーム | Windows (.NET) |

:::note
『Borland Developer Studio 2006』は

 - Delphi for Win32
 - Delphi for .NET
 - C# Builder
 - C++ Builder

がセットになった製品です。これを単体製品としてバラしたのが

 - Turbo Delphi for Win32
 - Turbo Delphi for .NET
 - Turbo C#
 - Turbo C++

です。
:::

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

 - 特になし (主にツール類の改良)

### その他

 - ある意味フル機能で使える最後の Delphi for .NET
 - .NET **Compact** Framework の開発を無理矢理行う方法がある

## Delphi 2007 for .NET

『CodeGear RAD Studio 2007』付属の .NET コンパイラ。単体製品はない。

| 項目 | 説明 |
|:---|:---|
| 製品名 | Delphi 2007 for .NET |
| 発売年 | 2007 |
| 発売元 | CodeGear |
| ビルドバージョン | 11.0  |
| コンパイラバージョン | 19.0  |
| BDS バージョン | 5.0 |
| サポートプラットフォーム | Windows (.NET) |

:::note
『CodeGear RAD Studio 2007』は

 - Delphi for Win32
 - Delphi for .NET
 - C++ Builder

がセットになった製品です。
:::

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

 - .NET Framework 2.0 対応
 - Windows Forms のサポートが打ち切られた
 - ジェネリックス対応 (Delphi 2007 for Win32 の方は未対応)
 - 任意の型の「空の値」または「ゼロ値」または「ヌル値」を返すジェネリック型関数 `Default()` が使えるようになった


### その他

 - 最後の Delphi for .NET
 - Windows Forms のサポートがないため、前バージョンの完全な上位互換ではない
 - 『RAD Studio XE』以降で貰える旧バージョンの『RAD Studio 2007』には『Delphi 2007 for .NET』は含まれていない

:::note
旧バージョンに『Delphi 2007 for .NET』が含まれない理由は、Embarcadero によると、

「Delphi for .NET は旧製品であり、古い Delphi for .NET の使用は推奨していないため、この製品は無償の旧バージョンライセンスには含めていません。」

との事。
:::

## Delphi Prism

**RemObjects Software** 社の『**Oxygene**』(古い名前は『Chrome』) が Embarcadero に OEM 供給されたのが『**Delphi Prism**』です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/b06af0f3-da58-502c-96ea-7c420d27a72b.png)

『Delphi Prism』は『Delphi for .NET』とは互換性がありません。.NET 向け Object Pascal の別実装と考えるべきでしょう。

 - RAD Studio 2009 ～ XE3 にバンドルされた
 - 単体製品もあった
 - IDE としては Visual Studio (Shell) が使われる
 - 『RAD Studio XE』以降で貰える旧バージョンの『RAD Studio 2009 ～ XE3』には『Delphi Prism』は含まれていない
 - .NET Framework 3.0 以降にも対応している
 - 『Oxygene』や『Oxygene』が含まれるスイート『Elements』は現在でも販売されている

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/e66464e8-d1cc-946e-e28e-12ce7fd52ef5.png)

# おわりに

Delphi 8 (for .NET) に関してはとにかく情報がありません。私自身、『Delphi 8』はスキップしてしまったので、Delphi for .NET に関する情報は主に『Delphi 2006 for .NET』から得ています。

現在の Windows 環境へのインストールは困難です。

『Delphi 8 for .NET』は [Microsoft に騙されて](https://ja.wikipedia.org/wiki/Windows_API#.NET_Framework%E3%81%A8%E3%81%AE%E9%96%A2%E4%BF%82) (?) 作っちゃった製品という感は否めないのですが、後の Delphi (for Win32) 製品にも導入された機能が先行して実装されていたりして、今思えば意欲的な製品ではありますね。境遇としては『[Turbo Pascal for the Mac](https://qiita.com/ht_deko/items/b41b0cd45181aec522d4#turbo-pascal-for-the-mac-10--11-1986-%E5%B9%B4)』に近いのかも。

:::note
Pacal には `P-code` という中間言語にコンパイルする処理系がありましたから、ある意味先祖返りと言えなくもないですね。
:::

**See also:**

 - [.NET 完全対応で生まれ変わった Delphi 8 (@IT)](https://atmarkit.itmedia.co.jp/fdotnet/special/delphi8/delphi8_02.html)
 - [Delphi 2006 で行う PocketPC アプリケーション開発 (Internet Archive: CDN)](https://web.archive.org/web/20070103230524/http://dn.codegear.com/article/33700)
 - [Delphi におけるジェネリックプログラミング (Qiita)](https://qiita.com/ht_deko/items/85a830380cb6e68aa773)
 - [Pascal-P シリーズについて (Qiita)](https://qiita.com/ht_deko/items/adab81f28295a124e9eb)
 - [Oxygene (programming language) (Wikipedia)](https://en.wikipedia.org/wiki/Oxygene_(programming_language))
 - [Oxygene (RemObjects)](https://www.remobjects.com/elements/oxygene/)
 - ["EditorLineEnds.ttr"を作成できません。プロセスはファイルにアクセスできません。別のプロセスが使用中です。エラーが発生する (Support Wiki)](https://docwiki.embarcadero.com/Support/ja/%22EditorLineEnds.ttr%22%E3%82%92%E4%BD%9C%E6%88%90%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%9B%E3%82%93%E3%80%82%E3%83%97%E3%83%AD%E3%82%BB%E3%82%B9%E3%81%AF%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AB%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%9B%E3%82%93%E3%80%82%E5%88%A5%E3%81%AE%E3%83%97%E3%83%AD%E3%82%BB%E3%82%B9%E3%81%8C%E4%BD%BF%E7%94%A8%E4%B8%AD%E3%81%A7%E3%81%99%E3%80%82%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%8C%E7%99%BA%E7%94%9F%E3%81%99%E3%82%8B)

# 索引
[ [← Delphi 7](https://qiita.com/ht_deko/items/5218dc9ceb71b1c3c77c) ] [ [↑ 目次へ](https://qiita.com/ht_deko/items/eb96629d705542e3a980) ]  [ [→ Delphi 2005](https://qiita.com/ht_deko/items/f7129cb6b2283a60bcf9) ]

[^1]: [IDE Integration pack for Delphi 8](http://cc.embarcadero.com/item/21333) や [IDE Integration pack for C#Builder 1.0](http://cc.embarcadero.com/item/21334) に含まれている
[^2]: 『Delphi 8』は唯一購入しなかった Delphi なので、VM 環境を持っていません。
[^3]: 後に『Delphi for PHP』という愚を犯します。