【T3】C++Builderテクニカルセッション「C++Builder 2007の新機能と活用のポイント」
CodeGear
高橋智宏

Copyright ©2007 CodeGear. All Rights Reserved.本文書の一部または全部の転載を禁止します。

1アジェンダ• C++Builder 2007
• .NET FrameworkをC++Builderから利用する• BDE+ParadoxをAbsolute Databaseに移行する

Copyright ©2007 CodeGear. All Rights Reserved.本文書の一部または全部の転載を禁止します。

21

C++Builder 2007
• Update2 - 8/10にリリース• http://dn.codegear.com/jp/article/36796• 適用時には、インストール時のキャッシュが必要[修復]により、キャッシュだけを再インストール可能
但し、サードパーディ製ツールなどを使用している場合はレジストリのバックアップリストアが必要• http://dn.codegear.com/jp/article/36815• bcc32.exe - Ver 5.91
• __BORLANDC__ は 0x591

Copyright ©2007 CodeGear. All Rights Reserved.本文書の一部または全部の転載を禁止します。

3

Update2 で更新されるファイル一覧
Professional/Enterprise共通• bin¥bcc32.exe• bin¥bcc32.jp• bin¥bccide.dll• bin¥bcbide100.bpl• bin¥bcbide100.jp• bin¥bcbide100.jdbg• bin¥comp32x.dll• bin¥comp32x.jp• bin¥vcldesigner100.bpl• bin¥vcldesigner100.jp• bin¥vcldesigner100.jdbg• bin¥Borland.Build.Tasks.Shared.dll• bin¥ja¥Borland.Build.Tasks.Shared.resources.dll• include¥vcl¥Types.hpp• C¥Windows¥Microsoft¥.NET¥Framework¥2.0.50727¥Borland.cpp.targets
Copyright ©2007 CodeGear. All Rights Reserved.本文書の一部または全部の転載を禁止します。

42

Upcoming Release• Update 3• http://blogs.codegear.com/ChrisPattinson/archive/2
007/08/11/38123.aspx• キャッシュが不要になりそう…
• Update 2 を含みそう…
とのこと

Copyright ©2007 CodeGear. All Rights Reserved.本文書の一部または全部の転載を禁止します。

5

C++Builder の変更点
• Dinkumware v5.01• Indy 10.1.5• Vistaダイアログ• ランタイムテーマ• ApplicationとMainForm• プロジェクト管理• Base,Release,Debug…

• MSBuild• データベースドライバとDataSetがUnicodeに対応• ただし、IBExpressは未対応
Copyright ©2007 CodeGear. All Rights Reserved.本文書の一部または全部の転載を禁止します。

63

Vistaで出来ること
ランタイムテーマがOnで• Progress Bar• TProgressBar• CUE BANNER• TEdit• TComboBox• ドロップダウン• ドロップダウンリスト
Copyright ©2007 CodeGear. All Rights Reserved.本文書の一部または全部の転載を禁止します。

7ApplicationとMainForm• VistaのAero対策• SetApplicationMainFormOnTaskBar関数• 従来のC++Builderプロジェクト移行時に…
• アプリケーションタイトル, アプリケーションアイコン

Copyright ©2007 CodeGear. All Rights Reserved.本文書の一部または全部の転載を禁止します。

84

MSBuild• .NET 2.0 Framework のMSBuildコマンドを利用• C¥Windows¥Microsoft¥.NET¥Framework¥2.0.50727¥MSBuild.exe• 環境変数 BDS• /t:<ターゲット名>• CleanAll, BuildAll …

• /property:Config=<ビルド設定名>• Debug, Release …

• makeファイルへの変換ツールは無い
Copyright ©2007 CodeGear. All Rights Reserved.本文書の一部または全部の転載を禁止します。

9.NET FrameworkをC++Builderから利用する
C#.NET 2.0 で作成した.NETアセンブリをCOMを利用してC++Builder2007から呼び出す

Copyright ©2007 CodeGear. All Rights Reserved.本文書の一部または全部の転載を禁止します。

105

.NETのアセンブリはCOMとして利用可能• C++Builder 2007 をインストールするには、.NETFramework 2.0 が必須• C#.NETでDLL(アセンブリ)を作成• GUID生成ツール• C#コンパイラ• regasmコマンド• gacutilコマンド ※オプショナル• snコマンド

Copyright ©2007 CodeGear. All Rights Reserved.本文書の一部または全部の転載を禁止します。

11

C#で作成したソースコード
using System;
using System.Runtime.InteropServices;using System.Reflection;[assembly:AssemblyKeyFile("ken.snk")][assembly:AssemblyVersion("1.0.0.0")][assembly:Guid("E7286CD5-6731-4195-9028-1AE407897B72")]
namespace Ken {[GuidAttribute("F6BB234C-260E-413b-9184-ECFAEBB17B65")]
public interface ICelsius {double Celsius2Fahrenheit(double degree);double Fahrenheit2Celsius(double degree);}…

Copyright ©2007 CodeGear. All Rights Reserved.本文書の一部または全部の転載を禁止します。

12

6

C#で作成したソースコード（続き）…
[GuidAttribute("D6988A55-A314-4f29-AB0C-54DC5C508729")][ClassInterface(ClassInterfaceType.None)]public class CelsiusImpl : ICelsius {const double CAbsoluteZero = -237.15;
const double FAbsoluteZero = -459.67;
public CelsiusImpl() { }public double Celsius2Fahrenheit(double degree) {if( degree < CAbsoluteZero ) throw new ApplicationException("無効な温度です");
return ((9 * degree) / 5) + 32;}
public double Fahrenheit2Celsius(double degree) {if( degree < FAbsoluteZero ) throw new ApplicationException("無効な温度です");
return ((5 * (degree - 32)) / 9);}}}
Copyright ©2007 CodeGear. All Rights Reserved.本文書の一部または全部の転載を禁止します。

13手順• sn.exe -k ken.snk• csc.exe /t:library ken.cs• regasm.exe ken.dll /tlb
• gacutil.exe -i ken.dll ※オプショナル• C++Builder2007でタイプライブラリのインポート• パッケージの作成• コンポーネントのインストール…
• gacutil –u ken• regasm ken.dll /unregister
Copyright ©2007 CodeGear. All Rights Reserved.本文書の一部または全部の転載を禁止します。

147

例外処理の注意点.NETからC++Builderへ例外を送出すると…
• include¥vcl¥utilcls.h• NO_PROMPT_ON_HRCHECK_FAILURE• EOleException• Messageプロパティは使えない

Copyright ©2007 CodeGear. All Rights Reserved.本文書の一部または全部の転載を禁止します。

15BDE+Paradox を移行する
Absolute Database v5.13- BDE Replacement single-file Delphi database engine

Copyright ©2007 CodeGear. All Rights Reserved.本文書の一部または全部の転載を禁止します。

168

BDE+Paradox の現状
C++Builder2007でも BDE+Paradox は動作するし、日本語版のマージモジュールもDVDに付属しているが…
• 基本的にサポート対象外!!
• すでに不具合修正などのメンテナンスは終了!!
• BDEのインストールが面倒!!
• たまに Paradox のテーブルが破損!!
• Unicodeが使えない!!
etc…
Copyright ©2007 CodeGear. All Rights Reserved.本文書の一部または全部の転載を禁止します。

17BDEの代替ソフトは数あれど…
• ComponentAce社の Absolute Database が最も移行し易い
Absolute Database v5.13• http://www.componentace.com/bde_replacement_database_delphi_absolute_database.htm• サポートOS• Windows 98/ME, Windows NT, 2000, XP, Vista• サポートIDE• Delphi4から2007, C++Builder4から2007
Copyright ©2007 CodeGear. All Rights Reserved.本文書の一部または全部の転載を禁止します。

189

特徴
• 単一ファイルでParadox以上の機能• .DLLなど一切不要 – .EXEのみで実行可能• シングルユーザー版とマルチユーザー接続版• 1開発者ライセンスは99ユーロから• ロイヤリティフリー• 個人利用目的限定の無償版あり• BDEやParadoxテーブルのインポート／エクスポート用ツールや、管理ツールが付属（ソースコード付き）• Unicode(WideString)も利用可能• 破損の自動修復やファイル暗号化etc…
Copyright ©2007 CodeGear. All Rights Reserved.本文書の一部または全部の転載を禁止します。

19

Paradoxのbiolife.dbを移行するデモ• 無償版をインストール• データベースファイルを作成• biolifeデータベースをインポート• TDatabase Æ TABSDatabase• TSession Æ TABSSession• TTable Æ TABSTable• TQuery Æ TABSQuery• TBatchMove Æ TABSTableのBatchMoveメソッド
Copyright ©2007 CodeGear. All Rights Reserved.本文書の一部または全部の転載を禁止します。

2010

注意点
• TDatabaseにあってTABSDatabasに無いもの• AliasNameプロパティ, DriverNameプロパティ• データベースファイル名だけOK• TTable,TQueryにあってTABSTable,TABSQueryに無いもの• CachedUpdatesプロパティのTrueモード• トランザクションを利用する

Copyright ©2007 CodeGear. All Rights Reserved.本文書の一部または全部の転載を禁止します。

21

C++Builder 2007 対応(予定)の製品など
Quick Report Professional 4.07(リリース予定)
TMS Unicode Component Pack Ver1.3.1.0
EurekaLog Ver6.0.7
etc…
Boost を bcc32 v5.91 でビルドするには?
Boost 1.34.1
bcbboost 1.34.0-5.9.0-0.1
http://bcbboost.sourceforge.net/※Boost 1.35 の時点でbcbboostをマージする予定らしい!?

Copyright ©2007 CodeGear. All Rights Reserved.本文書の一部または全部の転載を禁止します。

22

11

Q&A
Any question?

Copyright ©2007 CodeGear. All Rights Reserved.本文書の一部または全部の転載を禁止します。

23

12