C++Builder Starter (無料版)


追記:2018年07月18日から、pro版相当の機能が使えるCommunity Editionが配布されました。
https://www.embarcadero.com/jp/products/cbuilder/starter

無料版はWindows32bitしか開発出来ませんが、C++を使った開発が出来るツールです。
以前に独断と偏見で Visual C++ vs C++Builder - Qiitaという記事を書いています。

ちなみに、iOSとAndroidはProfessionalとMobileAddOnパッケージを購入しないといけないので20万近く 20万円以上かかります。
現在はProfessional版だけでモバイル開発出来るようです。
C++Builder 10.2.3からProfessional版には標準でモバイル開発機能が搭載されました。
Linuxはさらに高額なEnterprise以上のエディションじゃないと開発出来ません。

ダウンロードとインストール

ダウンロードにはユーザー登録の手続きが必要です。

C++Builder Starter - Embarcadero Website

手続きが終わるとメールでSerial Number等が書かれたものが送られてきて、そこにあるURLからでもダウンロード出来るので、それを実行してインストール作業をします。

インストールが完了すると、windows software development kitのインストールが開始されるので、インストールしてください。

最初にしておきたい設定

テーマ

10.2.2からツールの色合いが変更かのうになりました。濃色にしてますが、本バージョンからの追加だからか、一部色がおかしなことになりますし、一旦描画してから色を変えている感じがしてチラツキがありますので、淡色の方が最初は良いかもしれません。

支援機能

C++BuilderはVisual Studioに比べて非常に重たいと思います。特に、入力支援機能関係でものすごくディスクアクセスが発生している感じがします。
ですので、入力支援機能は切ったほうが良いです。
切ったとしても、任意で支援機能を使うことが出来ます。
ツール->オプション から
エディタ設定->支援機能
で、どうしても必要な機能以外はチェックを外します。

任意で支援機能を使う。

コード入力中にctrl + スペースで任意のタイミングで支援機能を使えます。

試しに書類を作る

FMXとVCL

C++Builder(と、Delphi)は、GUIのフレームワークとしてFireMonkey(FMX)とVCLがあります。
VCLは昔からあるWindows用のフレームワークで、FMXは新しいマルチプラットフォーム用のフレームワークです。
今回はStarterですので、どっちにしても32bitしか開発出来ないのでどっちでもいいですが、せっかくなのでFMXで開発してみましょう。
ファイル->新規作成->マルチデバイスアプリケーション

空のアプリケーションを選択します。

すると、キャンバスが現れたかと思います。

ツールの数が多い

C++Builderの特徴として、とにかくツールの数が多いというのがあります。
標準のツールだけでもかなりの数があります。
Pro版なら表グラフやデータベースのアクセス機能なんかもあります。
下の画像はツールパレットのカテゴリのスクリーンショットで、左がStarter、右がProfessionalです。(Professional版のほうは、以前から使ってるやつなので、無料のツールをいくつか入れてますが・・・)

でも

Professional版についているFireDACというツール。このツールは簡単にデータベースへアクセス出来るようにするツールで、たしかに使いやすいツールなのですが、FireDAC Client/Server Add-On Packを追加で購入しなければSQLiteやInterBase等の一部のデータベースしか使えません。
私はODBCの接続とかにサードパーティ製のUniDACというのを使ってます。
有料ですが、FireDACを購入するよりずっと安いですし、コードは似た作りになってます。

Universal Data Access Components (UniDAC) for Delphi

ちなみに、Pro版以上にあるdbGOでADOが出来ますのでODBC接続が使えます。
https://qiita.com/mm_sys/items/a6dd8edc9ebfb3de31ea

プロジェクトフォルダは作ってくれない

C++BuilderはVisualStudioのようにプロジェクトフォルダを作ってくれません。
ですので、書類を展開したら、
ファイル->すべて保存
で、プロジェクトのフォルダをつくった上で、そこに全て保存しましょう。

プロジェクトの設定

コンパイラを変更

C++Builder(とDelphi)は、元々買収したボーランド社のコンパイラを使ってましたが、最近のバージョンではClangコンパイラを拡張したものを選択できます。

しかし、デフォルトではなぜか古い方が使用されるようになってますので、プロジェクトの設定でC++コンパイラ->従来のコンパイラ->従来のBorlandコンパイラを使用のチェックを外しましょう。

ちなみに、ボーランドコンパイラはC++03までしか対応してないようです。

動的リンク

プロジェクトの設定で、Releaseの設定にC++リンカ->動的RTLとリンクすると、パッケージ->実行時パッケージ->実行時パッケージを使ってリンクのチェックをはずすと配布用に出来ます。
(ちなみに、コンパイラの不具合でexeを起動してもborlndmm.dllが見つからなかったため、このアプリケーションを開始できませんでした。と表示されることがありますが、exeと同じディレクトリに同名のファイルのコピーを置けば動作します。
そのファイルはC:\Program Files (x86)\Embarcadero\Studio\(バージョン番号)\binにあります。

フォームに部品を貼り付ける

先程作った書類の、フォーム作成画面で、ツールパレットからTButton、TStyleBook、TCheckBoxを貼り付けてみます。
検索ボックスから検索すればすぐ出てきます。

スタイルを変更する

作成したexeのGUIの見た目を変更してみます。
貼り付けたTStyleBookコンポーネントをダブルクリックしてスタイル編集画面に移動します。
移動したら、左上あたりにあるフォルダのアイコンを選択。

選択すると、ファイル選択ダイアログが表示されるので、C:\Users\Public\Documents\Embarcadero\Studio\19.0\Stylesにあるスタイルのセットのどれかを選択します。今回はDark.styleを選択しました。
注意すべきは、パブリックユーザのドキュメントにあるというところでしょうか。

スタイルを選択したら、ビューウィンドウを閉じようとします。すると、適用するか聞いてくるので、「はい」を選びましょう。

簡単にUIの印象を変える方法 - Styleの適用 - FireMonkey と VCL [Japan] - Community Blogs - Embarcadero Community

TStyleBookオブジェクトを選択して、UseStyleManagerにチェックを入れます。

ビルド

実行->実行を選択すると、.exeファイルが出力され、プログラムが実行されます。
TStyleBookコンポーネントでDarkテーマが使われて出力したアプリケーションのデザインが変更されています。

コンポーネントを貼り付けてプロパティを変えて、必要なところはC++を記述する。
短時間で見た目の良いアプリケーションを作成出来るので便利だと思います。

GetItパッケージ

機能拡張のパッケージ管理機能です。
ツール->GetItパッケージマネージャを選択して管理します。

注意

ウィルス対策ソフトがGetItパッケージをブロックすることが有ります。ウィルス対策ソフトの設定を変えてインストールすることをおすすめします。

CodeSite Expressを使ってみる

GetItパッケージでCodeSiteを探してインストールしてください。

CodeSiteはデバッグに使うロギングシステムです。
実際に使ってみましょう。

インストールが完了したら、先程作ったプロジェクトのUnit1.hを開いて#includeClassの間に以下のような記載を追加します。

unit.h
...//略
#include <FMX.Edit.hpp>
#include <FMX.StdCtrls.hpp>
#include <FMX.Types.hpp>
# ↓このへんに追加
#include "CodeSiteLogging.hpp"
#pragma comment(lib,"CodeSiteExpressPkg.lib")
#pragma link "CodeSiteLogging"
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
...//略

次にフォーム(Unit1.fmx)を開いて貼り付けておいたTButtonコンポーネント(Button1)をボタンをダブルクリックするか、選択した状態でイベントのOnClickをダブルクリックしてイベントを作成してください。

作ったら、その中に以下のように追記してください。

Unit1.cpp
void __fastcall TForm1::Button1Click(TObject *Sender)
{
// ↓これを記入する
    CodeSite->Send(L"test");
}
//---------------------------------------------------------------------------

これで実行すると、アクセスを求めてくることがありますが、許可を出してやれば、入力した内容がコンソールのように表示されます。
一時的な計算などのコンソール表示を使いたいときはこの方法を使うと良いでしょう。
ちなみに、文字列だけでなく時間やboolとか色々表示出来ます。

その他

不要なアクションは保存時に削除される

VisualC++と違って、例えば貼り付けたTButtonコンポーネントをダブルクリックすると、Clickアクションの実装がすぐに出来ますが、何も記述しないでそのままファイルを上書きすると、使われていないアクションのコードが自動で削除されます。
コメントや実装の中身を記述していたら削除されません。

コードと構成がシンプル

実際のヘッダと実装、ファイル構成を見てみると非情にシンプルになっています。

文字列

UnicodeStringをメインで使いながら、必要に応じて.c_str()メソッドを使って外部APIとやりとりします。
マルチバイトの処理は互換性のあるAnsiStringを使います。
このUnicodeStringAnsiStringは非常に強力で、Visual C++のように文字列の扱いで迷うことがほとんどありません。