Hello World!

まずは作ってみる

  1. [ファイル] - [新規作成] - [その他]でコンソールアプリケーションを選択
  2. 「{$APPTYPE CONSOLE}」を削除
  3. uses節の「SysUtils」を「Windows」に書き換える
  4. 「MessageBox(0, 'Hello World!', 'Project1', MB_OK);」をbegin〜end.間に挿入する

これで完成です。コードは次のようになります。(ToDoコメントは削除しています。)

program Project1;


uses
  Windows;


begin
  MessageBox(0, 'Hello World!', 'Project1', MB_OK);
end.

完成したらF9キーでコンパイルして実行してみましょう。

これでもれっきとしたWin32GUIアプリケーションです。

完成した実行バイナリは管理人の環境では8KBでした。

KOLライブラリを使ってさらに小さくする

systemユニットを入れ替えてさらに小さくするテクニックです。

  1. Key Objects Library(KOL)のページへ行きます。[Downloads] - [System]を選択し、[For Delphi6, with sources](ファイル名「sysdcuD6.zip」)をダウンロードして適当なフォルダに解凍します。
  2. [ツール] - [環境オプション]の[ライブラリ]タブで[ライブラリパス]の横の[...]ボタンを押し、[ディレクトリ]ダイアログを表示します。このダイアログで既定のライブラリパス「$(DELPHI)\Lib」よりも上に先ほどの解凍先のフォルダを指定します。管理人の環境では「D:\Download\sysdcuD6」が解凍先のフォルダですので次のようになります。

このように指定すればVCLを使うときやデバッグの時などは、上下矢印ボタンを使って「$(DELPHI)\Lib」が上に来るようにするだけで、既定のsystemユニットを使うようにできます。

設定後、同様にコンパイルします。実行バイナリのサイズは管理人の環境では6KB弱になりました。

UPXを使ってさらに小さくする

Delphiプログラマーにはおなじみのツール、UPXを使ってバイナリサイズを圧縮します。

  1. UPXのページへ行きます。「Win32 console version」をダウンロードして適当なフォルダに解凍します。
  2. 解凍先のフォルダの中にあるupx.exeに圧縮したいexeファイルをドラックアンドドロップします。
                     Ultimate Packer for eXecutables
         Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002
UPX 1.24w        Markus F.X.J. Oberhumer & Laszlo Molnar         Nov 7th 2002


        File size         Ratio      Format      Name
   --------------------   ------   -----------   -----------
      5632 ->      3584   63.63%    win32/pe     Project1.exe


Packed 1 file.

UPXが実行されて上のようなメッセージが表示されます。

管理人の環境では圧縮後、実行バイナリのサイズは4KB弱になりました。

おまけ

比較のため、同様の実行バイナリをVCLを使って作ってみます。

program Project1;


uses
  Dialogs;


begin
  ShowMessage('Hello World!');
end.

上のコードをコンパイルします。

実行バイナリのサイズは管理人の環境では397KBにもなりました。