旧C++Builder FAQ - 一般的な質問と回答

Abstract: この FAQは、旧 www.borland.co.jpに掲載されていた記事を転載したものです。記事は掲載時点の情報をあるがままに掲載しており、新バージョンでのご利用においては、コンポーネントや APIの仕様変更等によりご利用いただけない場合がありますのでご留意ください。

    C++Builderのマルチスレッドアプリケーションは、DLLをいくつロードできますか(99/7/5)

該当するバージョン:C++Builder 4, C++Builder

Q:

C++Builderのマルチスレッドアプリケーションは、DLLをいくつロードできますか

A:

Win32にマルチスレッドアプリケーションは、64の DLLをロードできます。

この制限は Windowsのスレッドローカルストレージ(TLS)が、スレッドのスロットを 64個しか持ち合わせていないために発生します。

注意

COMを使用しますと、2つ以上の TLSのスロットを消費します。

    Borland C++Builderに対する一般的な質問と回答

該当するバージョン:C++Builder 1

Q:

Borland C++Builderにはどのような製品形態がありますか

A:

Borland C++Builderには次の製品形態がございます。

  • C++Builder Standard

32bitの C++コンパイラとインクリメンタルリンカ、90以上のコンポーネント、ビジュアルなフォームの継承やフォームのリンクなど C++Builder の基本機能を全て備えています。

  • C++Builder Professional

C++Builder Standardの機能を全て備え、更にデータベースオブジェクトを繰り返し表示できるマルチオブジェクトグリッド、スケーラブルなデータディクショナリ、ODBC対応、Local InterBase Server Internet Solutions Pack、WinSight32などがバンドルされています。

  • C++Builder Client/Server Suite

C++Builder Professionalの機能を全て備え、更に SQLデータベースをビジュアルに管理する SQLエクスプローラ、SQL Link、PVCSエンジン Visual Query Builder、InterBase Workgroup Serverなどがバンドルされています。

添付マニュアル

Standard

Professional

C/S Suite

ユーザーズ

o

o

o

コンポーネント開発者

o

o

o

データーベースアプリ

o

o

o

プログラマーズ

o

o

VCLリファレンス

o

o

InterBase for Windows95ユーザーズ

o

o

InterBaseデータ定義

o

InterBase言語リファレンス

o

標準 C++ライブラリリファレンス

o

ライブラリリファレンス

o

機能表

Standard

Professional

C/S Suite

幅広く普及している C++を使ったビジュアル開発

o

o

o

高性能、32ビット最適化ネイティブコードコンパイラ

o

o

o

高速なプロジェクトの構築を実現するインクリメンタルリンカ

o

o

o

組み込みデバッガ、充実な機能を持つプログラムエディタ

o

o

o

ユニークな 2Way-Toolや使いやすいフォームデザイナを持つビジュアル開発環境

o

o

o

OLEオートメーションサーバーとコントローラの作成

o

o

o

プログラムを単純化し保守性を向上させるビジュアルなフォームの継承

o

o

o

90種類以上の再利用可能なコンポーネント

o

o

o

フォームやコンポーネントの設計を支援するウィザードツール

o

o

o

ビジネスルールやアプリケーションロジックを独立させるデータモジュール

o

o

o

dBase. Paradox. ASCIIテキスト形式のデータ処理

o

o

o

テーブルやエリアスを表示、編集できるデータベースエクスプローラ

o

o

o

レポート出力やプレビューを設計するための QuickReports

o

o

o

パスカウントや条件式付きのブレークポイントを含む高度な統合デバッガ

o

o

o

インストーラ作成ツール InstallShield Express

o

o

ODBCによるデータベースへの接続

o

o

スケーラブルなデータディクショナリ

o

o

複数レコードの表示に柔軟性を与えるマルチオブジェクトグリッド

o

o

ウィンドウや Windowsメッセージを監視する WinSight32

o

o

開発の参考やコンポーネントのカスタマイズに利用できる VCLソースコード

o

o

オフラインでの SQL開発を実現する LocalInterBase Server

o

o

インターネットプログラミングを支援する Internet Solutions Pack

o

o

好みのツールを組み込むための Open Tools API

o

o

SQLデータベースのメタデータも管理できる SQLエクスプローラ

o

SQLのパフォーマンスを調べるための SQLモニタ

o

問い合わせをビジュアルに設計できる Visual Query Builder

o

SQLデータベースに直接接続できる SQL Linkと再配布権

o

チーム開発とバージョン管理を支援する PVCSエンジン

o

開発とテストのための InterBase for Windows 95最大 4ユーザ

o

Q:

動作環境を教えてください。

A:

動作環境

OS    Windows95 又は WindowsNT 4.0/3.51 
CPU   80486以上 
RAM   24MB以上(推奨32MB) 
HDD   90MB(STD), 120MB(PRO), 150MB(CSS) 
CDROMドライブ、マウスなどのポインティングデバイス 

Q:

C++Builderは、どのようなユーザを対象にしていますか

A:

個人の方で、趣味でアプリケーション開発を楽しみたい方から、企業内の開発者、プロ開発者、VARや開発業者、クライアントサーバーアプリケーションを作成する開発者など Windows95/NTに対応するアプリケーションを開発したい方すべてです。

Q:

これまで C/C++を使ってきましたが、C++Builderを使用するべきでしょうか

A:

C++Builderは、既存の C/C++資産やプログラムのノウハウを無駄にすることなく活用できます。ユーザーインターフェースをビジュアルに設計できアプリケーションロジックの埋め込みも容易です。フォームの継承やデータモジュールなど、オブジェクト指向も高められています。

ただし、C++Builderには OWLや MFCが提供するドキュメント/ビューのような機能はありません。全てを C++Builderで開発する代わりに Borland C++や 他の C++コンパイラの 32bitアプリケーションのフロントエンドとして利用することもできます。

Q:

これまで Delphiを使用してきましたが、C++Builderを使うべきでしょうか

A:

C++Builderは、Delphi 2.0と同等の機能を C++言語で実現した製品です。一部の機能を除けば、開発環境やコンポーネントの機能は Delphi 2.0と同等です。

他の C/C++資産を活かしたい場合や、テンプレート、オーバーロード、また多重継承など C++の特長を利用したい場合には C++Builderをお勧めします。

C++Builderは Delphi 2.0で作成したフォームやコンポーネントを再利用できるため、Delphi 2.0プログラマと C++Builderプログラマが共同でアプリケーションを開発することもできます。

Q:

C++Builderは、16bitの開発にも対応しているのでしょうか

A:

C++Builderは、32bit開発専用ツールです。

Q:

C++Builderでは、DLLを作成できますか

A:

C++Builder自身だけでなく他の C/C++、Delphi、Visual Basic等から利用できる 32bit DLLを作成できます。DLLの作成にもコンポーネントライブラリが使用できます。

Q:

C++Builderは、中間コードを使用しますか

A:

C++Builderは、開発時にもネイティブコンパイラ使用により機械語を生成し、より高速なアプリケーションを作成します。

Q:

C++Builderは、Borland C++や Visual C++のプログラムをコンパイルできますか

A:

C++Builderの C++コンパイラは Borland C++ 5.0と上位互換性があり、Borland C++や Visual C++で開発したプログラムをコンパイルできます。

ただし、OWLや MFCのソースコードは含まれません。

Q:

コンパイルの高速化のために C++の仕様を切り捨てていないのですか

A:

C++Builderは、最新の ANSI C++をサポートしつつ、プリコンパイルヘッダやインクリメンタルリンカによって軽快なレスポンスを達成しています。名前空間、テンプレート、多重継承、オーバーロードなど、全ての C++の特長を利用できます。

Q:

これからプログラムを始めたいのですが、C++Builderを使うべきでしょうか

A:

C++Builderは、わかりやすいビジュアルな操作でアプリケーション開発を始められます。アプリケーション開発のための部品(コンポーネント)も豊富で、幅広いアプリケーションをわずかな手間で作成できます。

プログラミング言語には幅広く普及している C++を採用しているため、参考にできる情報量も多く初心者の方に適しています。また、名前空間やテンプレートなど最新の ANSI C++の機能もサポートしているため、学習から実用まで幅広く利用できます。さらに、より高度なアプリケーションを開発したい場合でも、Windows95/NTをはじめ、DirectXや MAPIなどすべての APIを利用でき、長期的にも有利です。

Q:

クライアントサーバーアプリケーションを開発する予定ですが、C++Builderを使うべきでしょうか

A:

C++Builderでは、データベース対応のコンポーネントをフォームに配置したり、必要な項目をドラッグ&ドロップするだけで容易にデータベースアプリケーションを開発できます。

テーブル、問い合わせ、ストアドプロシージャなど充実したコンポーネントに加え、グリッド、レコード操作ボタン、イメージなど多彩な表示用のコントロールが用意されています。

これらは、dBase/Paradoxなどのローカルデータだけでなく Oracle, MS SQL Server, Interbaseといった SQLデータベースにも対応しています(CSS版)。

また、ODBC接続にも対応しています(PRO版以上)。コンポーネントベースでの開発は、ソースコードだけに依存するよりもはるかに簡単です。

Q:

Delphiのコンポーネントを再利用する際に、ソースコード(.PAS)は必要ですか

A:

必要です。C++Builderは、ソースコードを再コンパイルして C++プログラミングに必要なヘッダファイル(.HPP)を生成します。

Q:

SQL Linkを使ってアプリケーションを開発した場合、開発したアプリケーションとともに SQL Linkを再配布できますか

A:

SQLデータベースに接続するための SQL Linkは、C++Builder Client/Server Suiteで利用できます。

C++Builder Client/Server Suiteの正規登録ユーザーは、SQL Linkを使って開発したアプリケーションとともに SQL Linkを再配布することができます。

    Delphiで使用していたフォームを C++Builderで使用したい

Q:

Delphiで使用していたフォームを C++Builderで使用したい

A:

リポジトリに登録して頂ければ C++Builderでの使用が可能になります。

リポジトリの登録の方法は、[ファイル|開く]で登録したい Delphiの pasファイルを IDEに読み込みます。すると IDEにそのフォームが表示され、表示されたフォームの上でマウスの右クリックでスピードメニューが表示されます。そのメニューの中の"リポジトリに追加"を選び、"リポジトリに追加"ダイアログを表示し、"タイトル","コメント","ページ","作者"などを入力して OKボタンで閉じます。

これで登録完了です。

登録したフォームの使用方法は、登録したフォームを使用したいプロジェクトを IDEで使用しているときに[ファイル|新規作成]を選び、先ほど追加したリポジトリのページのタブに変更します。登録したフォームが表示されていますので、そのフォームを選択して OKボタンをクリックして頂けると現在のプロジェクトでの使用が可能となります。

この時、継承のラジオボタンを有効にしていた時は、コンポーネントの張り付けなども可能となります。

    デバッグ情報を付加しても、実行ファイルのサイズが変わりません

該当するバージョン:C++Builder 1

Q:

デバッグ情報を付加しても、実行ファイルのサイズが変わりません

A:

C++Builderは、デフォルトで ilink32.exeを使用します。

この ilink32は、デバッグ情報を別ファイル(.tds)で作成しますので、実行ファイルのサイズは変わらなくなります。

また、tlink32.exeを使用していただければ、実行ファイルにデバッグ情報を含めることができます。

    Delphiで作成した関数を C++Builderで使用したい

該当するバージョン:C++Builder 1

Q:

Delphiで作成した関数を C++Builderで使用したい

A:

Delphiで作成した関数を C++Builderで使用させるには .pasファイルから .objと .hppを生成する必要があります。

生成方法は以下のように DCC32.EXE(C++Builder に付属)を使用します。

unit1.pas ファイルがあることを仮定

DCC32 -JPHNV unit1.pas

エラーがなければ、unit1.dcu, unit1.obj, unit1.hppが生成されます。

このうちの unit1.objと unit1.hppを使用します。

先ず unit1.objを[プロジェクト(P)|プロジェクトに追加(A)...]でプロジェクトに追加して下さい。

最後に unit1.pasに含まれる関数を使用する所で unit1.hppをインクルードして、コンパイルしていただければリンク、実行が可能になります。

    作成したアプリケーションを配布したが動作しない

該当するバージョン:C++Builder 3,C++Builder 4

Q:

アプリケーションを作成し、実行ファイル(*.EXE)を配布しました。

C++Builderをインストールしている PCでは動作するが,インストールしていない PCでは動作しない。

A:

実行ファイル(*.EXE)のみで動作するアプリケーションは、ランタイムライブラリとパッケージを静的にリンクする必要があります。

ランタイムライブラリ:

[プロジェクト(P)|オプション(O)|リンカ - ダイナミック RTL]を使用のチェックをはずします。

パッケージ:

[プロジェクト(P)|オプション(O)|パッケージ - 実行時パッケージを使って構築]のチェックをはずします。

また,ダイナミック RTL・実行時パッケージを使用したアプリケーションでは InstallShieldを使用するとファイルを簡単に配布できます。

セットアップチェックリストから[InstallShield オブジェクトの選択]を選び[一般]ページから必要な項目にチェックします。

    ChartFX, GraphicsServer, VCFirstImpressionなどの OCXを配布したい

該当するバージョン:C++Builder 1

Q:

ChartFX, GraphicsServer, VCFirstImpressionなどの OCXを配布したい

A:

InstallShield Expressを使用して配布して下さい。

Install Shieldでインストールする以下のファイルを CD-ROMのイメージから Windowsの systemディレクトリにインストールするようにして下さい。

ChartFX

  • CFX32.LIC
  • CFX32.OCX

GraphicsServer

  • GSWDLL32.DLL
  • GSWAG32.DLL
  • GSW32.EXE
  • GRAPH32.OCX

VCFirstImpression

  • VCFI.LIC
  • VCFIDL32.DLL
  • VCFIWZ32.DLL
  • MFCANS32.DLL
  • OC30.DLL
  • GDS32.DLL
  • VCFI32.OCX

また、それぞれの OCXファイルを登録する前に、必ず他のファイルがインストールされるようにして下さい。

Windows95, WindowsNTは、最新の Service Packをインストールして下さい。

    テンプレートの記述がコンパイルエラーになります(99/6/4)

該当するバージョン:C++Builder 4

Q:

3.0Jでコンンパイル可能だった記述が,4.0Jからコンパイルできなくなりました

A:

4.0Jからテンプレートに関して,コンパイラの変更があり、テンプレートは宣言と同時に解析されるようになりました。

そのため外部リンケージを持たない,識別子はバインドされなくなりました。

次のような記述はコンパイルエラーになります。

 template<class T> void func( T t ){}

 void main()
 {
   class Some{};
   func(Some());  //この記述は,バインドできない。
 }

    バージョン3のプロジェクトをバージョン4に変更するとリンカーエラーが表示されます(その1)(99/5/12)

該当するバージョン:C++Builder 4

Q:

バージョン3のプロジェクトをバージョン4で読み込ませてアップデートしました。

リンクすると"inet40.bpi, inetdb40.bpi"が見つからないとリンカーエラーが表示されます

A:

C++Builder 3.0J Proに付属していた。Web Brokerのコンポーネントが 4.0J Proでは,標準で付属されなくなりました。

しかし 3.0J Proのプロジェクトを 4.0J Proでアップデートすると Web Broker関連のパッケージ情報もアップデートします。(inet35.bpi->inet40.bpi, inetdb35.bpi->inetdb40.bpi)

このためリンクエラーが表示されます。

回避方法は,アップデートしたプロジェクトを統合環境で読み込ませた状態で、メニューの[プロジェクト|オプション|パッケージ|実行時パッケージを使って構築]の下のテキストボックスに記述されています inet40.bpi;inetdb40.bpiを削除してメイクを行って下さい。

    バージョン3のプロジェクトをバージョン4に変更するとリンカーエラーが表示されます(その2)(99/5/12)

該当するバージョン:C++Builder 4

Q:

バージョン3のプロジェクトをバージョン4で読み込ませてアップデートしました。リンクすると"vcle35.libが見つかりません" とエラーが表示されます。

A:

バージョン3で作成したプロジェクトを、そのままバージョン4に置き換えてメイクを行うと発生する場合があります。

version 3のテンポラリーファイルや objが内部的に旧ライブラリ(version3用)を参照しているために発生しています。

次の拡張子を持つファイルを削除して version 4で再構築を行って下さい。

*.ilc, *.ild, *.ilf, *.ils, *.tds, *.obj

また,プロジェクトを version 4に変更されていても、使用しているパッケージが version 3のパッケージの libを参照している場合、"vcle35.libが見つかりません" とエラーが表示されてしまいます。

バージョン3で使用していたユーザー定義パッケージのプロジェクトもバージョン4に変更して再構築を行って下さい。

    下位バージョンのプロジェクトをバージョンアップすると、動作が不安定になります(99/5/12)

該当するバージョン:C++Builder 4

Q:

旧バージョンのプロジェクトをバージョンアップすると、動作が不安定になります

A:

バージョン4からフォームのプロパティに OldCreateOrderプロパティが付加されました。このプロパティは OnCreateイベントとフォームのコンストラクタの呼び出し順を管理しています。trueに設定されていますと OnCreateイベントがコンストラクタより先に呼び出されてしまいます。

旧バージョンのプロジェクトをバージョン4にアップデートするとこのプロパティが trueに設定されてしまいます。

このため OnCreateイベントとコンストラクタで処理をいろいろと行っていたプログラムは、動作が変わってしまいます。

もとの状態と同じにするには OldCreateOrderプロパティを falseに変更して下さい。

    ToolBarの Flatプロパティを trueにしても透過しなくなった(99/5/12)

該当するバージョン:C++Builder 4

Q:

ToolBarの Flatプロパティを trueにしても透過しません

A:

C++Builder4.0Jから ToolBarのプロパティが追加されました。

3.0Jでは Flatを trueにするだけで背景が透過されましたが、4.0Jでは Transparentを trueにすることで透過するようになりました。

Flatは ToolBarをフラットに見せるだけのみのプロパティに変更されました。