はじめに
Delphi 7 は 2002 年に Borland からリリースされました 1。
- Win9x で動作する実質的な最終版
- Delphi 2 ~ 6 までのコードがほぼそのまま動作
- BDE に SQL-Link ドライバが付属
- Windows XP 以降のテーマにも対応
上記理由により、今でもマイグレーションの中間ステップ用に使われる事が多いです。
Embarcadero 製品のインストーラ及びアップデータは同社のサイト
いずれかからダウンロードできます。Delphi 7 は古い製品という事もあり、登録製品ポータルからだとダウンロードできないアイテムがあるようです。
本記事は、各種ファイルを登録ユーザダウンロードからダウンロードして Windows 10 /11 にインストールする手順となっています。
■ インストーラとアップデータとホットフィックス
#1 Delphi 7 ISO
セットアップ CD-ROM イメージファイル (ISO) です。
インストーラが自動起動した場合にはそれを閉じ、Explorer で install\setup.exe を右クリックしたら [管理者として実行] で開きます 2。
インストール先も、デフォルトの %ProgramFiles(x86)%\Borland\Delphi7\
ではなく、C:\Embarcadero\Delphi7\
のような UAC の影響を受けない場所にインストールした方がトラブルは少ないと思います。
ISO | Personal | Professional | Enterprise | Architect |
---|---|---|---|---|
ID: 28037, Delphi 7 Professional ISO - Japanese | × | 〇 | × | × |
ID: 28038, Delphi 7 Enterprise ISO - Japanese | × | × | 〇 | (〇) |
SKU によってダウンロードするファイルが違います。
※Delphi の最新バージョンを購入すると同グレードの旧バージョンが貰えるのですが、Delphi 7 Architect は日本未発売のため、最新バージョンの Architect 版を購入しても貰えるのは Enterprise 版となります。
※この ISO ファイルは基本的に最新バージョンを購入して旧バージョンを取得した人向けです。そうでない方は CD-ROM からインストールしてください。
インストールが終わったら [ツール | 環境オプション] の Delphi Direct
タブで Delphi Direct を無効にしておくとよいでしょう。
#2 Update1
いわゆる Delphi 7.1 と呼ばれるものです。
Updater | Personal | Professional | Enterprise | Architect |
---|---|---|---|---|
ID: 25939, Delphi 7 General Update 7.1 / Personal / All Languages | 〇 | × | × | × |
ID: 25940, Delphi 7 General Update 7.1 / Professional / Japanese | × | 〇 | × | × |
ID: 25945, Delphi 7 General Update 7.1 / Enterprise / Japanese | × | × | 〇 | × |
ID: 25950, Delphi 7 General Update 7.1 / Architect / Japanese | × | × | × | 〇 |
アーカイブを適当な場所に解凍して d7_ja_xxxx_upd1_1.exe
(xxxx の部分は SKU によって異なります) を実行します。
本来、アップデータを適用するとバージョンダイアログ ([ヘルプ | バージョン情報]) の表記が Version 7.0 (Build 8.1)
になるハズなのですが、Personal / Professional SKU では Update1 を適用しても Version 7.0 (Build 4.453)
のままです。
delphi32.exe
のプロパティを確認し、ファイルバージョンが 7.0.8.1
になっていれば大丈夫です。
何故か Architect 用のアップデータもありますが、英語版 Architect を購入した方向けでしょうか?
- ID: 25939, Delphi 7 General Update 7.1 / Personal / All Languages
- ID: 25940, Delphi 7 General Update 7.1 / Professional / Japanese
- ID: 25945, Delphi 7 General Update 7.1 / Enterprise / Japanese
- ID: 25950, Delphi 7 General Update 7.1 / Architect / Japanese
- Delphi 7.1 update (EDN)
- Delphi 7 アップデート 1 (EDN)
・W32/Induc-A 対策
Update1 を適用したら、忘れずに W32/Induc-A 対策を行いましょう。
- コマンドラインコンパイラ (
DCC32.EXE
) を使わないのならリネームするか他の場所に移動する。まれにコンポーネントのインストーラがセルフビルドのために使うことがあるので注意。 -
Lib
、Lib/Debug
フォルダにSysConst.bak
という空のファイルを作る。 -
Lib
フォルダを読み取り専用に設定する。
※ W32/Induc-A は Delphi 4 ~ Delphi 7 のみが影響を受けるウィルスです。現在販売されている Delphi は影響を受けません。
See also:
・BMP のバッファオーバーフロー対策
バッファオーバーフロー対策を行います。$(DELPHI)\Source\Vcl
にある graphics.pas
を次のように改変します。
function PaletteFromDIBColorTable(DIBHandle: THandle; ColorTable: Pointer;
ColorCount: Integer): HPalette;
...
begin
if ColorCount > 256 then // ADD
InvalidGraphic({$IFNDEF CLR}@{$ENDIF}SInvalidBitmap); // ADD
Pal.palNumEntries := ColorCount;
Move(ColorTable^, Pal.palPalEntry, ColorCount * 4);
end;
...
procedure TMetafile.ReadEMFStream(Stream: TStream);
...
NewImage;
Stream.ReadBuffer(EnhHeader, Sizeof(EnhHeader));
if EnhHeader.dSignature <> ENHMETA_SIGNATURE then InvalidMetafile;
if EnhHeader.nBytes < Sizeof(EnhHeader) then // Add
InvalidMetafile; // Add
GetMem(Buf, EnhHeader.nBytes);
...
procedure TBitmap.ReadDIB(Stream: TStream; ImageSize: LongWord; bmf: PBitmapFileHeader);
...
// Read the color palette
if biClrUsed = 0 then
biClrUsed := GetDInColors(biBitCount);
if (biClrUsed * DIBPalSizes[OS2Format]) > (256 * SizeOf(TRGBQuad)) then // ADD
InvalidGraphic({$IFNDEF CLR}@{$ENDIF}SInvalidBitmap); // ADD
Stream.ReadBuffer(ColorTable^, biClrUsed * DIBPalSizes[OS2Format]);
Dec(ImageSize, biClrUsed * DIBPalSizes[OS2Format]);
...
改変した graphics.pas
をプロジェクトフォルダにコピーして使ってください。
※ バッファオーバーフローの問題は Delphi XE4 以前で発生します。XE5 / XE6 / XE7 には修正パッチが配布されています。現在販売されている Delphi では問題解決済みです。
See also:
- Delphi および C++Builder における VCL Bitmap LoadFromFile の脆弱性について (Support Wiki)
- Delphi および C++ Builder の VCL ライブラリのバッファ オーバーフロー (SupportKB)
#3 Bold Update for Delphi 7
Borld for Delphi Architect 用のアップデータです。
アーカイブを解凍し、BoldForDelphiR40D7Architect4.0.1.0.exe
を管理者権限で実行します。
※日本語版ではインストール不要です (未リリースのため)。
#4 Delphi 7 Registration Wizard Update
アーカイブを解凍したら、すべてのファイルを Delphi インストールフォルダにある bin
サブフォルダに上書きします。
#5 その他のアップデータ
ID 番号的に Update1 に含まれているかもしれないアップデータです。
Delphi 7 MS SQL Driver Update
Enterprise / Architect SKU 向けの MS SQL DBX ドライバアップデータです。
アーカイブを解凍し、dbexpmss.dll
を Delphi インストールフォルダにある bin
サブフォルダに上書きします。
※Personal / Professional ではインストール不要です。
Delphi 7 CORBA Update
Enterprise / Architect SKU 向けの VisiBroker 用 アップデートです。
アーカイブを解凍し、Delphi インストールフォルダ下の所定の位置へコピーします。
パス | ファイル |
---|---|
\Source\Rtl\Corba45 | *.pas |
\Lib\Debug | 同名の *.dcu |
\Lib\IDL45 | 同名の *.dcu |
\Bin | OrbPas45.dll |
※Personal / Professional ではインストール不要です。
Delphi 7 DB2 Driver Update
Enterprise / Architect SKU 向けの DB2 DBX ドライバアップデータです。
アーカイブを解凍し、dbexpdb2.dll
を Delphi インストールフォルダにある bin
サブフォルダに上書きします。
※Personal / Professional ではインストール不要です。
■ 追加コンポーネント
過去のバージョンで使っていたかもしれないコンポーネントを有効にする方法です。
・[Samples] カテゴリの VCL
インストール時に [サンプルアプリケーション] を選択しなかった場合、TGauge 等の一部のコンポーネントが利用できなくなります。
- インストーラを再度実行。
- インストーラのオプションで
[変更
] を選択 - インストールする項目で
プログラムファイル | サンプルプログラム
を選択。
上記手順で後からサンプルコンポーネントをインストールできます。
・TServerSocket / TClientSocket
古いバージョンでは [Internet] カテゴリにあったコンポーネントです。存在はしますが、デフォルトでは有効になっていません。
- [コンポーネント | パッケージのインストール]
- [追加]ボタンを押下。
-
$(DELPHI)\bin
3 にあるdclsockets70.bpl
を指定。
上記手順で TServerSocket / TClientSocket が有効になります。
■ その他のダウンロード可能ファイル
その他、Delphi 7 で有用なファイル群です。
・Indy (Internet Direct)
Indy に関しては別記事があります。
・IntraWeb (VCL for the Web)
IntraWeb に関しては別記事があります。
・IBX 7.11 for D7 w/ IB 2007 support
IBX のバージョンを Delphi 2007 と同等のものへアップグレードします。
アーカイブを解凍したら、'IBXDP711.EXE' を実行します。
・RaveReport 5.0.8 Borland Edition
RaveReport のインストーラです。
Delphi 7 よりも新しいバージョンの Delphi を先にインストールしていると、RaveReport 5.0.8 Borland Edition をインストールできないかもしれません。
・QuickReport 3.5.1 Standard for Delphi 7
Delphi 7 用の QuickReport 3.5.1 Standard です。
アーカイブを解凍してできた QRSTD351D7.EXE
を実行します。次に Delphi IDE から次の手順でコンポーネントを登録します。
- [コンポーネント | パッケージのインストール]
- [追加]ボタンを押下。
-
$(DELPHI)\bin
3 にあるdclqrt70.bpl
を指定。
・Delphi 7 Delphi for Microsoft .NET Preview Update 3
Delphi 7 用の .NET Framework 向けコンパイラ (DCCIL) です。後に Delphi 8 となるコンパイラのプレビュー版です。
アーカイブを解凍してできた Delphi_dotNET_Preview_upd3.exe
を管理者権限で実行します。
※.NET Framework 1.0 を必要とするため、Window 10 以降では動作しません。
・FireDAC 8.0.5
FireDAC が使える後続のバージョンを持っている場合、FireDAC をインストールする事が可能かもしれません。XE4 の FireDAC アドオンパックが利用可能な場合、XE4 ~ Delphi 5 の IDE にインストール可能です。
別記事に詳細があります。
・VistaAltFix (Fix for QC report 37403)
Delphi 7 で作成した Windows テーマ対応アプリ 4 を Vista 以降の Windows で実行した場合、〔Alt〕キーを押すとコントロールが消えます。
これを回避するには VistaAltFix を使います。
アーカイブを解凍すると、VistaAltFixUnit.pas
が得られます。これは非ビジュアルコンポーネントなのですが、インストールせずに使う事もできます。
uses
..., VistaAltFixUnit;
...
procedure TForm1.FormCreate(Sender: TObject);
begin
TVistaAltFix.Create(Self); // 追加
...
end;
VistaAltFixUnit
を uses に追加し、FormCreate にコードを追加するだけです。
See also:
・WinHelp(32)
Delphi 7 / 7.1 のヘルプは WinHelp(32) なのですが、Windows 10 / 11 では動作しません。
@moondoldo さんの記事を参考にしてヘルプを表示できるようにしておくとよいでしょう。
See also:
■ Borland Database Engine (BDE)
Borland Database Engine (BDE) を正しく動作させるには追加の設定が必要です。
- BDE 5.2 ダウンロードサービス (EDN)
- BDE, SQL Link とは (EDN)
- BDE, SQL Link サポート状況 (EDN)
- BDE の旧バージョン (EDN)
- データベースベンダからの情報 (EDN)
- The Future of the Borland Database Engine (BDE) and SQL Links (EDN)
BDE Administrator
BDE Administrator は必ず管理者権限で実行する必要があります。
ショートカットのプロパティで管理者権限で実行するようにしてもいいのですが、
コントロールパネルからだと管理者権限では起動されません。
面倒なので、管理者権限への昇格が促される BDE Administrator を作ってしまうのが簡単かと思います。
- XN Resource Editor 3.0.0.1 [ja] rev.37 をダウンロードし、適当な場所に解凍する。
-
C:\Program Files (x86)\Common Files\Borland Shared\BDE\
にあるbdeadmin.exe
を UAC の影響を受けない場所にコピーする (デスクトップ等)。 -
bdeadmin.exe
を XN Resource Editor で開く。 - [リソース | リソースの追加] で
Application Manifest
を追加する。
- 右下のボタンで
requireAdministrator
を付与する。
- [ファイル | 保存] し、
bdeadmin.exe
にシールドアイコンが付いた事を確認する。
-
bdeadmin.exe
をC:\Program Files (x86)\Common Files\Borland Shared\BDE\
に書き戻す。
※アプリケーションマニフェストを追加できるリソースエディタであれば何を使っても構いません。
Patch for BDE 'Insufficient disk space' problem
ディスク容量が充分にあるにも関わらず、BDE を使用したアプリケーションで Insufficient disk space
のエラーが出る問題を回避するパッチです。
- アーカイブを解凍したら、その中にある
FixBDE4GbBug.pas
をプロジェクトフォルダにコピーする。 - プロジェクトファイルの uses 先頭に
FixBDE4GbBug
を追加してビルドする。 - Delphi アプリケーション以外では
FIX4GBug.dll
を静的リンクし、アプリケーションと共に配布する。
マルチコア対策
BDE を使うアプリはシングルプロセッサで動作させる必要があります。
uses
...
Windows,
...
SetProcessAffinityMask(GetCurrentProcess, 1); // CPU 0 のみを使用
これをやらないと高負荷時に エラー $2A04: Operation not applicable.
が発生することがあります。
ACL 対策
BDE Administrator の 環境設定
タブにある [Drivers | Native | PARADOX] の NET DIR
の値がデフォルトの C:\
のままだと PDOXUSRS.NET のエラーが出ます。UAC が有効の場合、システムドライブルートにファイルを作成する事はできないからです。
C:\TEMP
フォルダを作ってそれを設定するか、
// ACL 対策
Session.NetFileDir := SysUtils.GetHomePath;
Session.PrivateDir := SysUtils.GetHomePath;
コードで指定しましょう。
プロパティ | 意味 |
---|---|
NetFileDir | PDOXUSRS.NET 置き場。ネットワークで共通の場所 (ネットワークドライブ) を指定する必要がある。 |
PrivateDir | ロックファイル置き場。セッション毎に別のフォルダを指定する必要がある。 |
EXE がネットワークドライブに置いてあり、そこから実行する場合 NetFileDir
は同じ場所 (ネットワークドライブのフォルダ) を、PrivateDir
は異なる場所 (ローカルのフォルダ) を指定する必要があります。
同一ローカルフォルダにある複数の EXE が BDE を利用する場合、NetFileDir
は同じ場所 (適当なローカルフォルダ) を、PrivateDir
は異なる場所 (別々のローカルフォルダ) を指定する必要があります。PrivateDir
はデフォルトで EXE が実行されたカレントフォルダに設定されるからです。
See also:
BDE 初期化エラー対策
エラーコード $210D
や $2501
に対する対処です。BDE Administrator の [環境設定] タブを開き、[System | INIT] にある SHAREDMEMLOCATION の値を 3BDE 等に変更します。設定可能な値とデフォルト値は次の通りです。
項目 | Windows NT | Windows 9x |
---|---|---|
最小値 | 1000 (0x10000000) | 9000 (0x90000000) |
最大値 | 7F00 (0x7F000000) | FFFF (0xFFFF0000) |
デフォルト値 | 6BDE (0x6BDE0000) | EBDE (0xEBDE0000) |
3BDE
を設定すると 0x3BDE0000
を指定した事になります。
Windows Vista 以降の ASLR (アドレス空間配置のランダム化) では次の領域が使われます。
項目 | ASLR |
---|---|
最小値 | 0x50000000 |
最大値 | 0x78000000 |
このため、Windows 10 / 11 等でデフォルト設定のまま BDE アプリケーションを動作させると 0x6BDE0000
以降の領域が既に使われていてエラーになる事があります。
See also:
おわりに
使う頻度がそこそこ高い Delphi 7.1 の環境構築方法でした。Delphi 7.1 の実行の際にも管理者権限で実行するようにしてくださいね。
Delphi の最新バージョンでは、旧バージョンライセンスを使用することができます。「ソースコードはあるけどコンパイル環境がない!」という場合には同グレードの最新版 Delphi を購入するといいですよ。
See also:
- Delphi 旧バージョン情報 (Embarcadero)
- Supported Versions (Support Wiki)
- Platform Status (Support Wiki)
- Delphi 2007 (R2) for Win32 を Windows 10 / 11 にインストールする
- Delphi XE を Windows 10 / 11 にインストールする