Mercurial #hg / #TortoiseHg で Beyond Compare Lite

Embarcadero RAD Studio に付属の Beyond Compare Lite を Mercurial / TortoiseHg で使うための設定例を曝してみる。

[merge-tools]
bcomparelite.priority = -4
bcomparelite.executable = C:\Program Files (x86)\Embarcadero\RAD Studio\version\bin\BCompareLite.exe
bcomparelite.args = /ro /title1=local /title2=other $local $other
bcomparelite.gui = True
bcomparelite.diffargs = /ro1 /title1='$plabel1' /title2='$clabel' $parent1 $child

ここが変だよ! #Embarcadero C++Builder (part 2)

今回は不具合ではなくて言語仕様の話をしようと思う。

C++Builder では Delphi のクラスを使えるように拡張されているが、元々異なるものをくっつけたのでちぐはぐになっているという一例がこれ。

Link: C  Builder VCL でのオブジェクト生成 – RAD Studio.

Delphi (Object Pascal)  のクラスでは、最派生クラスのコンストラクターがまず呼び出されて、そこから基底クラスのコンストラクターを入れ子的に呼び出す仕組みなのに対して、C++ では基底クラスのコンストラクターから順に呼び出されるという言語仕様なので、呼び出される順番が異なる―というわけで、木に竹を接いだらこうなりましたというすごい仕様になっていたりする。

ここが変だよ! #Embarcadero C++Builder

C++Builderプロジェクトでmem.hというヘッダーファイルを作ると大変という話。

C++Builderでは,memcpyやmemsetといったCの標準ライブラリー関数を<mem.h>で宣言していて,<string.h>から間接的にインクルードしているのだが,このせいでユーザーがプロジェクトでmem.hというヘッダーファイルを作ると,そちらが使われてしまってmem*系の関数が宣言されないという困ったことになってしまうのである。

Link: mem.h – RAD Studio XE3.

続きを読む →

C++Builder XE FAQより

C++Builder XEの製品情報が公開されたので、FAQを流し読みしてみた。

  • XEを買えば、C++Builder 6以降の各バージョンも使えるらしい。
  • Blackfish SQLはもう付いてこないらしい。代わりはInterBase。

COM書くのにATL不要になったらしいので、今回はアップグレードするつもりだけど、1年以内に64ビット対応するか不明なので、年間サポートはなしにするかな。

リンク: C++Builder FAQ | RAD C   IDE and Compiler.