C++ Builder Community Editionを使ってみる ~ 以前のプロジェクトを生かすには?

2022年5月19日

前回、C++ Builder1の紹介をしました。

しかし、C++ Builder1Windows9x系でしか動作しないため、他を探すとC++ Builder Community Editionが見つかりました。早速、インストールしてみました。

1.C++ Builder Community Editionのダウンロード

C++ Builder Community Editionは、以下からダウンロードできます。

指示に従ってダウンロードしてください。表示されたメッセージを適当に読んで処理すると、体験版がダウンロードされたりしますから、注意してください。

また、OSはWindowsだけでなくiOSやAndroidも選択できますが、今回はWindowsで進めます。

2.インストーラーの起動

ダウンロード先にRADStudio-xxxxx.exeというインストーラーがありますので、起動します。あとは、指示通りに進めてください。

インストールには、EMBARCADEROへのユーザ登録が必要になります。私の場合は、Borland時代のユーザ登録がそのまま使えました。

3.起動してみる

起動してみます。特に何事もなく、IDEが立ち上がりました。使い方のチュートリアルが、いろいろ用意されています。まったくC++ Builderに触れたことがない人は、見ることをお勧めします。

私は、早速、以前に作ったプロジェクトをロードしてみます。

4.以前に作ったプロジェクトをロードしてみる

Windows Vistaまで動作していたプロジェクトをロードします。ロードするプログラムは、私のオンラインソフトでは2番目に好評を頂いたVerticalWriterです。早速、ロードすると

やはり、そのままは使えません。コンバートしてくれると思ったのですが、駄目なようです。一から作り直しは、さすがにできません。それで、調べると

EMBARCADEROのサイトに対処法が掲載されています。一から作り直すよりはマシなので、やってみます。

と、VerticalWriterのコンバートを始めたのですが、VerticalWriterが結構複雑かつ現在存在しないサービスを使用しているため、簡単にコンバートができないことが分かりました。C++ Builderの特徴にコンポーネントがありますが、自作のコンポーネントが複数あることを忘れていました。

そしてビルドしてみると、型がない、型が合わない、型変換に失敗が爆発的に出ました。VerticalWriterは、C標準ライブラリWindows APIレベルの特有な型を使っています。また、致命的なのは、S-JISベースで処理していて、1バイト文字、2バイト文字で計算をしているので、Unicode時代の今では、適合できなくなっていました。

このように、VerticalWriterを動作させるのは、暇を見て作ることによる、ずっと先のことになります。もう一つの私の代表作、JDTPも、同様の問題を抱えています。

5.簡単なプログラムを動かしてみる

でも、動くプログラムを見たいので、ディレクトリ選択ダイアログを作ってみました。

新規にプロジェクトを作成します。Windowsのフォームアプリケーションは、「Windows VCL アプリケーション」を選択します。

立ち上がったら、まずはフォームを作成します。フォームが表示されていなかったら、「フォーム名.dfm」をダブルクリックしてください。

そして、フォーム上にコントロールを貼り付けていきます。パレットから貼り付けたいコントロールを選び、フォーム上にドラッグ&ドロップします。

今回貼り付けたのは、TDriveComboboxTDirectoryListBoxTEditです。この操作性の良さは、感激です。BDS2006よりも軽快で良くなってますね。

それでは、コントロールに対してコードを記述します。コントロールを選択して、オブジェクトインスペクタイベントタブを選択して、OnChangeの位置でダブルクリックします。すると、イベントを処理する関数が自動的に作成されます。その関数内に、処理させるコードを書き込みます。

このように、コントロールに対して処理を書き込むといった操作が、当時は画期的でした。最終的には、以下のコードとなりました。

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
	: TForm(Owner)
{
	DriveComboBox1->DirList	= NULL ;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::DriveComboBox1Change(TObject *Sender)
{
	BOOL retry = TRUE;
	while (retry)
	{
		try
		{
			DirectoryListBox1->Drive = DriveComboBox1->Drive;
			retry = FALSE;
			Edit1->Text = DirectoryListBox1->Directory ;
		}
		catch(EInOutError *e)
		{
			// nop
		}

	}

}
//---------------------------------------------------------------------------
void __fastcall TForm1::DirectoryListBox1Change(TObject *Sender)
{
	Edit1->Text = DirectoryListBox1->Directory ;

}
//---------------------------------------------------------------------------

ビルドしてみます。

無事、ビルドできました。実行してみましょう。

問題なく動作します。こんなに簡単にプログラムが出来てしまいます。

当時はプログラムをする人も多かったです。パソコン雑誌にDelphiのプログラム記事が結構載っていたものです。

スマートフォンのプログラムは、とても誰でも作成できるとは言えません。Windowsとスマートフォンの違いはあるとは言え、今の開発ツールは難解すぎます。

6.iOSやAndroidのプログラム作成も面白そう

C++ Builderでは、Windowsのアプリケーションだけでなく、iOSやAndroidのアプリケーションも作成できるようです。Android Studioの状況を考えるとC++ Builderでは問題が多発しそうな気もしますが、機種依存のないプログラム開発ができそうです。

C++ Builder。今後も生き残って欲しいですね。