【Delphi】Delphi 2009 について

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

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/e722a075-b0e3-e220-68a5-5bd8ead429a4.png)

# 概要
製品概要です。


| 項目 | 説明 |
|:---|:---|
| 製品名 | Delphi 2009 |
| コードネーム | Tiburón |
| 発売年 | 2008 |
| 発売元 | Embarcadero Technologies |
| ビルドバージョン | 12.0  |
| コンパイラバージョン | 20.0 |
| BDS バージョン | 6.0 |
| サポートプラットフォーム | Windows |

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

 - Unicode 対応
 - 標準の **string** が UnicodeString になった
 - ジェネリックスが追加された (Win32 では初)
 - ジェネリックリスト (`TList<T>`) やコレクションが使えるようになった
 - 無名メソッドが使えるようになった
 - メソッド参照型が使えるようになった
 - 任意の型の「空の値」または「ゼロ値」または「ヌル値」を返すジェネリック型関数 `Default()` が使えるようになった (Win32 では初)
 - 標準で PNG 形式の画像を扱えるようになった
 - リボンコントロールが追加された
 - `TEncoding` が使えるようになった
 - `TStringBuilder` が使えるようになった
 - `TSemaphore` が使えるようになった
 - 結果パラメータを伴う `Exit()` が使えるようになった
 - 無名メソッドに対応した `Synchronize()` が使えるようになった
 - 演算子のオーバーロードで `In()` と `Include()` および `Exclude()` が使えるようになった
 - `{$POINTERMATH ON}` コンパイラ指令を使って、型付きポインタに対するポインタ演算が行えるようになった
 - `{$SCOPEDENUMS ON}` コンパイラ指令を使って、スコープのある列挙型を作る事ができるようになった
 - ANSI を扱うための `AnsiStrings` ユニットが追加された
 - ビルド構成を [プロジェクトマネージャ] から切り替えられるようになった
 - リソースファイルをプロジェクトで管理できるようになった (`[プロジェクト | リソース]`)
 - [ツールパレット] に検索ウィンドウが付いた
 - `TRichEdit` がラップしている RichEdit (`Riched20.dll`) が変更になった (Delphi 2007 以前は `Riched32.dll` をラップしていた)

## その他

 - 最初の Unicode 系 Delphi
 - 生成された実行形式バイナリが Win9x 系や Windows 2000 よりも前の NT 系で動作しない可能性が高い
 - クラスヘルパを使うと裏技的にクラスの **private** メンバにアクセスできるようになった
 - 以降『Quick Report』は付属しない
 - クラスエクスプローラが復活した
 - Unicode に対応したリソースコンパイラ `CGRC.EXE` が付属するようになった
 - IDE 環境設定のレジストリエントリは `HKEY_CURRENT_USER\Software\CodeGear` にある
 - <font color="Crimson">以降、DBX を利用する場合、Profession 版でのリモート接続がライセンス違反となる</font>
 - <font color="Crimson">TBitmap にバッファオーバーフローの脆弱性がある</font>
 - CodeGear が Embarcadero に買収された
 - 2008 年には『Windows XP』の Service Pack 3 がリリースされています
 - 2008 年は初代『Android』端末が発売された年です

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21785/6c86f4aa-488a-0d93-9d8a-5723bc8e34ca.png)

### アプリケーションを Unicode 化するために必要な情報

過去、アプリケーションを Unicode 化するために必要な情報の詰まった記事が EDN にありました。現在 Suppport Wiki にはそれらの記事が転載されています。

 - [Delphi Unicode ワールド パート I: Unicode とは？なぜ必要なのか？そして、Delphi でどのような作業を行うのか？ (Support Wiki)](https://docwiki.embarcadero.com/Support/ja/Delphi_Unicode%E3%83%AF%E3%83%BC%E3%83%AB%E3%83%89_%E3%83%91%E3%83%BC%E3%83%88I:Unicode%E3%81%A8%E3%81%AF%EF%BC%9F%E3%81%AA%E3%81%9C%E5%BF%85%E8%A6%81%E3%81%AA%E3%81%AE%E3%81%8B%EF%BC%9F%E3%81%9D%E3%81%97%E3%81%A6%E3%80%81Delphi%E3%81%A7%E3%81%A9%E3%81%AE%E3%82%88%E3%81%86%E3%81%AA%E4%BD%9C%E6%A5%AD%E3%82%92%E8%A1%8C%E3%81%86%E3%81%AE%E3%81%8B%EF%BC%9F)
 - [Delphi Unicode ワールド パート II: RTL の新機能と、Unicode をサポートするクラス (Support Wiki)](https://docwiki.embarcadero.com/Support/ja/Delphi_Unicode%E3%83%AF%E3%83%BC%E3%83%AB%E3%83%89_%E3%83%91%E3%83%BC%E3%83%88II:RTL%E3%81%AE%E6%96%B0%E6%A9%9F%E8%83%BD%E3%81%A8%E3%80%81Unicode%E3%82%92%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88%E3%81%99%E3%82%8B%E3%82%AF%E3%83%A9%E3%82%B9)
 - [Delphi Unicode ワールド パート III: コードを Unicode 対応にする‎‎ (Support Wiki)]()
 - [Delphi 2009 と Unicode: Part I (Support Wiki)](https://docwiki.embarcadero.com/Support/ja/Delphi_2009%E3%81%A8Unicode:Part_I)
 - [Delphi 2009 と Unicode: Part II (Support Wiki)](https://docwiki.embarcadero.com/Support/ja/Delphi_2009%E3%81%A8Unicode:Part_II)
 - [Delphi 2009 と Unicode: Part III (Support Wiki)](https://docwiki.embarcadero.com/Support/ja/Delphi_2009%E3%81%A8Unicode:Part_III)
 - [Delphi 2009とUnicode: 番外編（サロゲートペア）(Support Wiki)](https://docwiki.embarcadero.com/Support/ja/Delphi_2009%E3%81%A8Unicode:%E7%95%AA%E5%A4%96%E7%B7%A8%EF%BC%88%E3%82%B5%E3%83%AD%E3%82%B2%E3%83%BC%E3%83%88%E3%83%9A%E3%82%A2%EF%BC%89)

どうしても ANSI 版 Delphi からの移植が難しいコードがあるのなら「**MECSUtils**」を使ってみてください。

# おわりに

待望の Unicode 系 Delphi の登場です。バグが多めなので、次バージョンの『Delphi 2010』以降を使った方がいいと思います。

## Delphi 2009 よりも前での Unicode アプリケーション

Delphi 2009 よりも前で Unicode アプリケーションを作るには、TntWare の『**TNT Unicode Control**』を使う必要がありました。『TNT Unicode Control』は Delphi 6 以降 (旧バージョンは Delphi 5 以降) で使う事ができます。

『TNT Unicode Control』は無償だったのですが、2007/03 頃 TMS Software に買収され『**TMS Unicode Component Pack**』という有償の製品になりました。有償になる前の『TNT Unicode Control』は GitHub で公開されています。

**See also:**

 - [Delphi / C++Builder の新機能 (2007 以降) (Qiita)](https://qiita.com/ht_deko/items/23f51b4345f5d9ef14b1)
 - [Delphi で生成された EXE が動作する Windows のバージョン (Qiita)](https://qiita.com/ht_deko/items/e7d3e32dd97b3569e581)
 - [Delphi におけるジェネリックプログラミング (Qiita)](https://qiita.com/ht_deko/items/85a830380cb6e68aa773)
 - [【Delphi】文字列とファイルと複数行文字列 [小ネタ] (Qiita)](https://qiita.com/ht_deko/items/8a65920ab87e7f65b971)
 - [「MS Help 2.x ランタイムがインストールされていない」というエラーを解消する (Qiita)](https://qiita.com/ht_deko/items/be1fb0aa801abbcdaa5c)
 - [MECSUtils リファレンス (ht-deko.com)](https://ht-deko.com/tech021.html)
 - [正規表現の活用 (主に Delphi 2009 以降) (ht-deko.com)](https://ht-deko.com/tech064.html)
 - [Delphi 2009 Handbook (Amazon)](https://www.amazon.co.jp/dp/487783222X/)
 - [リッチ エディット コントロールについて (learn.microsoft.com)](https://learn.microsoft.com/ja-jp/windows/win32/controls/about-rich-edit-controls#rich-edit-version-30)
 - [TRichEdit で英数字等のフォントが勝手に変わる (Delphi 2009 以降) (ht-deko.com)](https://ht-deko.com/ft1212.html#121212_03)
 - [Delphi および C++ Builder における VCL Bitmap LoadFromFile の脆弱性について (Support Wiki)](https://docwiki.embarcadero.com/Support/ja/Delphi%E3%81%8A%E3%82%88%E3%81%B3C%2B%2BBuilder%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8BVCL_Bitmap_LoadFromFile%E3%81%AE%E8%84%86%E5%BC%B1%E6%80%A7%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6)
 - ["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)
 - [オフラインインストール用に登録コードを取得する（RAD Studio/Delphi/C++Builder 2009からXE5まで） (Support Wiki)](https://docwiki.embarcadero.com/Support/ja/%E3%82%AA%E3%83%95%E3%83%A9%E3%82%A4%E3%83%B3%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E7%94%A8%E3%81%AB%E7%99%BB%E9%8C%B2%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92%E5%8F%96%E5%BE%97%E3%81%99%E3%82%8B%EF%BC%88RAD_Studio/Delphi/C%2B%2BBuilder_2009%E3%81%8B%E3%82%89XE5%E3%81%BE%E3%81%A7%EF%BC%89)
 - [手動アンインストール手順（RAD Studio 2009）(Supprt Wiki)](https://docwiki.embarcadero.com/Support/ja/%E6%89%8B%E5%8B%95%E3%82%A2%E3%83%B3%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E6%89%8B%E9%A0%86%EF%BC%88RAD_Studio_2009%EF%BC%89)
 - [TntWare Delphi Unicode Controls (Internet Archive: TntWare at 2007/02/06)](https://web.archive.org/web/20070206074549/http://www.tntware.com/delphicontrols/unicode/)
 - [TntWare Delphi Unicode Controls (Internet Archive: TntWare at 2007/04/05)](https://web.archive.org/web/20070405083709/http://www.tntware.com/delphicontrols/unicode/)
 - [Tnt Delphi UNICODE Controls Project (GitHub: @rofl0r)](https://github.com/rofl0r/TntUnicode?tab=readme-ov-file)
 - [TMS Unicode Component Pack (TMS Software)](https://www.tmssoftware.com/site/tmsuni.asp)

# 索引
[ [← Delphi 2007](https://qiita.com/ht_deko/items/a23fc5f5c676fd0bd356) ] [ [↑ 目次へ](https://qiita.com/ht_deko/items/eb96629d705542e3a980) ]  [ [→ Delphi 2010](https://qiita.com/ht_deko/items/763bb8f6e145caadcd3e) ]