表示: Object Pascal C++
表示設定

リリース ノート

提供: Appmethod Topics
移動先: 案内, 検索

新機能 への移動


このリリース ノートには、主な製品ドキュメントに含まれていない可能性のある重要な情報が記載されています。このページのすべての内容に目を通されることをお勧めします。このリリース ノートの最新版については、http://docwiki.embarcadero.com/RADStudio/Seattle/ja/リリース_ノート を参照してください。

目次

Appmethod のインストール、アンインストール、アップブレード

本製品のインストール、アンインストール、アップグレードの前には、選択した言語の次のファイルをお読みください。

  • appmethod_install_xx.htm: インストールとアップグレードの手順に加えて、システム要件が記載されています。
  • appmethod_license_xx.rtf: ソフトウェア使用許諾およびサポート契約書が含まれています。
  • appmethod_deploy_xx.htm: 配置に関する情報が含まれています。

appmethod_install_xx.htm ファイルの最新版は、以下の場所でお読みになれます。

  • インストール ノート
  • インストール ディレクトリ。デフォルトでは C:\Program Files (x86)\Embarcadero\Studio\17.0 にあります。


FireMonkey アプリケーション プラットフォーム

フォーム デザイナで新規ビューの作成前にすべてのコンポーネントに名前を割り当てる必要あり

古い FireMonkey アプリケーションを 1.17 で開く場合、次のエラー メッセージが出力されるおそれがあります。

 Cannot inherit from form 'FormName".  It contains a component with a blank name property.

新しいビュー継承システムでは、フォーム デザイナで新規ビューを作成するには、まず、すべてのコンポーネントに名前を割り当てる必要があります。

デバイス上で iOS アプリケーションをデバッグなしで実行したあと正常に閉じる/開き直すことができないおそれあり

デバイス上で iOS アプリケーションをデバッグなしで実行したあと、デバイス上でアプリケーションのプロセスを強制終了した場合は、IDE の外部でプロセスを実行するのであれば、PAServer のリセット コマンドを実行する必要があります。それには、PAServer のコマンド プロンプトで「r」と入力します。

さまざまなプラットフォームで Web ブラウザがあるリンク動作をサポートしていないおそれあり

TWebBrowser で表示されている Web ページで、Target プロパティが "_blank" または "_search" に設定されているハイパーリンクをクリックすると、次の問題が発生するおそれがあります。

  • Android および iOS プラットフォームでは、同じ TWebBrowser ウィンドウにリンク先のページが開きます。
  • Win32 および Win64 プラットフォームでは、新規の Internet Explorer ウィンドウにリンク先のページが開きます。
  • Mac OS X プラットフォームでは、リンクをクリックしても効果がありません(リンク先のページが開きません)。

FireDAC

FireDAC コンポーネントを使用する 64 ビット Windows C++ アプリケーションでエラーが発生するおそれあり

静的リンクを使用する Windows x64 をプラットフォームとする場合は、FireDAC コンポーネントを 1 つ使用するアプリケーションをコンパイルしようとすると、以下のエラーが発生します。

c:\program files (x86)\embarcadero\studio\<n.n>\Bin\CodeGear.Cpp.Targets : warning : Warning: Out of memory
c:\program files (x86)\embarcadero\studio\<n.n>\Bin\CodeGear.Cpp.Targets(2751,5): error MSB6006: "ilink32" exited with code 2.

このエラーを回避するには、Win64 C++ アプリケーションで FireDAC を静的にリンクしません。

FireDAC の INI ファイルに関するエラーの回避策

これまでのバージョンでは、FireDAC の INI ファイルは "C:\Program Files" に作成されていましたが、現代の Windows バージョンでは、このディレクトリは通常の Windows ユーザーには読み取り専用になります。[データ エクスプローラ]や FDExplorer を使って新しい FireDAC 接続定義を追加すると "Can't modify file(ファイルを変更できません)" のようなエラーが発生する場合は、FireDAC の INI ファイルがまだ "C:\Program Files" に入っている可能性があります。この問題を解決するには、FDFixIni ユーティリティをダウンロードして実行します。その結果、FireDAC の INI ファイルが正しい場所に移動し、FireDAC レジストリが更新されます。デフォルトでは、正しい場所は "C:\Documents and Settings\All Users\Documents\Embarcadero\Studio\FireDAC" です。

この問題を解決するには:

  • 登録ユーザー向けサイト(http://cc.embarcadero.com/item/29812)から FDFixIni をダウンロードします。
  • ダウンロードしたアーカイブから .EXE ファイルを解凍します。
  • 解凍したファイルを実行します。このユーティリティが正常に実行された場合は、"Move <古い場所> to <新しい場所>" というメッセージが 2 行出力されます。

Box2D

Appmethod 1.17 には、Box2D.*.pas ユニットのビルド済みの .dcu ファイルが用意されていません。

  • Box2D.*.pas ユニットを使用している Object Pascal プロジェクトの場合は、[プロジェクト|オプション...|Object Pascal コンパイラ]を選択し、[検索パス]include ${BDS)\source\FlatBox2D が含まれるように更新します。
  • Box2D の使用の詳細については、「Box2D」を参照してください。

IDE

パッケージを生成するための BCC32C 用の追加オプション

IDE で使用したいコンポーネントを含むパッケージをビルドするときに、BCC32C(32 ビット Windows 用 Clang 拡張 C++ コンパイラ)に対して追加オプションを設定する必要があります。

[プロジェクト|オプション...|C++ コンパイラ|拡張|その他のオプション|コンパイラに渡す追加オプション]で、このフィールドに -tP を追加してください。

CodeGuard オプションは Clang 拡張 C++ コンパイラではサポートされない

[プロジェクト|オプション...|C++ コンパイラ|デバッグ]CodeGuard オプションは、Clang コンパイラではサポートされません。

プロジェクトを Clang 拡張 BCC32C コンパイラに切り替える場合、CodeGuard を false 設定で保持する必要があります。詳細については、「Clang 拡張 C++ コンパイラでサポートされていないオプション」を参照してください。

マルチデバイス フォーム デザイナではマスタ ビューからのみコンポーネントを削除可能

別のビュー([マスタ]ビュー以外)からコンポーネント(たとえば TButton など)を削除しようとすると、次のエラー メッセージが表示されます。

 Selection contains a component, Button1, introduced in an ancestor and cannot be deleted

この問題を解決するには、コンポーネントの削除を[マスタ]ビューで行います。ビューの詳細については、「フォーム デザイナ」を参照してください。

名前を変更した iOS プロジェクトは実行時またはデバッグ時に失敗するおそれあり

IDE でプロジェクトの名前を変更すると、iOS アプリケーションが実行時やデバッグ時に失敗するおそれがあります。 この問題を解決するには、以下を行います。

  1. [プロジェクト|配置]を選択します。
  2. 配置マネージャで、[デフォルトに戻す]スピード ボタンをクリックします。

Windows Server 2008 でモバイル ヘルプ ウィザードのコンテンツがブロックされる

Windows Server 2008モバイル ヘルプ ウィザードが開くと、Internet Explorer ダイアログ ボックスが表示されます(モバイル ヘルプ ウィザードのコンテンツがブロックされます)。ウィザードのコンテンツを参照するには、[追加]ボタン(Internet Explorer のホワイトリストにウィザードのコンテンツを追加)をクリックする必要があります。

Appmethod では、モバイル アプリケーションの作成時に、所定の構成手順に従う必要がある場合、または問題が発生し支援が必要な場合に、モバイル ヘルプ ウィザードが表示されます (また、[ヘルプ|モバイル ヘルプ ウィザード]を選択してモバイル ヘルプ ウィザードを開くこともできます)。

モバイル ヘルプ ウィザードのセットアップについては、以下で確認できます。

バージョン情報設定の継承

Windows をターゲットとするプロジェクトにバージョン情報を組み込むには、[すべてのプラットフォーム]ターゲットでのキー値を変更するのではなく、代わりに各プラットフォーム(32 ビットおよび 64 ビット)向けに値を個別に変更します。個々のターゲットでは、[すべてのプラットフォーム]ターゲットから値を正しく継承しません。

Windows 10 との互換性

Windows 7、8、8.1 のいずれかから Windows 10 にアップグレードする場合は、Appmethod C++ の[構造]ビューでいくつか問題が発生する可能性があります。これらの問題は、Windows システムに Microsoft Visual J# Version 2.0 が正常にインストールされていないことに起因しています。

これを回避するには、Microsoft Visual J# Version 2.0 を再インストールします。手順は次のとおりです。

  1. Microsoft Visual J# Version 2.0 をアンインストールします。これは結果的にエラーになります(想定内です)。
  2. レジストリを探して、J# に関係するエントリをすべて削除します。
  3. デバイスを再起動します。
  4. Microsoft Visual J# Version 2.0 をインストールします。
  5. デバイスを再起動します。

詳細については、Microsoft コミュニティ フォーラム(英語版)で「Can not install Microsoft Visual J#® 2.0 on Windows 10 (not compatible)(Windows 10 に Microsoft Visual J#® 2.0 をインストールできない(互換性がない))」を参照してください。

AndroidManifest.template.xml ファイルの変更点

他のバージョンで作成した、Android をターゲットとするプロジェクトでは、AndroidManifest.template.xml ファイルに関する変更に起因する誤動作を避けるため、AndroidManifest.template.xml を再作成する必要があります。

古い AndroidManifest.template.xml の変更内容を維持するには、新しいファイルを編集して、以前の変更を含めます。

See the steps to follow here: Re-creating the AndroidManifest.template.xml File===Android サービスのビルド構成===

Android サービスがホスト アプリケーションに追加されたときに選択されたビルド構成とは異なるビルド構成を選択して Android サービス アプリケーションを配置すると、一部のファイルが配置マネージャに追加されず、アプリケーションが実行時に動作しなくなります。

For more information on how to solve the problem, see Android Services Troubleshooting.

C++ ツールチェーン

OS X アプリケーションにおける DWORD または ULONG の多重宣言の解消

OS X ターゲット プラットフォーム向けにコンパイルされるマルチデバイス アプリケーションの場合、E2238 エラーが発生するおそれがあるのは、OS X ヘッダー iodbcunix.h および sqltypes.hDWORDULONGtypedef 文が宣言されているためと、Appmethod C++ の sysmac.h ファイル(System.hpp でインクルードされている)にも同様の typedef 文が宣言されているためです。回避策については、E2238 を参照してください。

C++ パッケージ内のコンポーネントを使用する際の依存パッケージおよび必須パッケージの指定

C++ パッケージ内の既存コンポーネントを使用する際、IDE では、そのコンポーネントの依存(必須)パッケージを自動的には追加しません。このステップは手動で実行する必要があります。

関連する依存(必須)パッケージがなければ、そのコンポーネントの使用時に初期化する必要がある .obj ファイルをリンカが見つけられないため、C++ パッケージはリンクできないおそれがあります。このようなリンカ エラーを避けるには、コンポーネントのパッケージとその依存パッケージを([プロジェクト マネージャ]内の)C++ パッケージの[Requires]ノードに追加する必要があります。

次の例では、コンポーネントの必須パッケージを割り出し、そのコンポーネントを使用するダミーの VCL フォーム アプリケーションを作成することにより "xxx.obj を開けません" というリンカ エラーを解消する方法を示しています。

デフォルトでは、次のリンカ コマンド ライン([表示|メッセージでビューを表示)で指定されている *.bpi ファイルからもわかるように、新規に作成される C++ マルチデバイス アプリケーションでは .rtl パッケージおよび .fmx パッケージとリンクします。

ilink32 コマンド ライン:

 c:\BDSLoc\bin\ilink32.exe ... -aa -V5.0 -Tpe  c0wfmx32w rtl.bpi fmx.bpi memmgr.lib sysinit.obj .\Win32\Debug\Project30.obj .\Win32\Debug\Unit26.obj , .\Win32\Debug\Project30.exe , .\Win32\Debug\Project30.map , import32.lib cp32mti.lib , , Project30.res

新しいコンポーネントを追加すると、IDE が依存パッケージを推定し、リンカ コマンド ラインを調整します。このことを確認するため、C++ パッケージ内の使用コンポーネントをマルチデバイス フォームに追加します。この例では、TFDSchemaAdapter コンポーネントを使用します。では、アプリケーションを再ビルドします。新しい .bpi ファイルがいくつかリンカ コマンド ラインに追加されたことがわかります。

ilink32 コマンド ライン:

 c:\BDSLoc\bin\ilink32.exe ... -aa -V5.0 -Tpe  c0w32w rtl.bpi fmx.bpi FireDACCommonDriver.bpi FireDACCommon.bpi xmlrtl.bpi dbrtl.bpi FireDAC.bpi FireDACSqliteDriver.bpi memmgr.lib sysinit.obj .\Win32\Debug\Project30.obj .\Win32\Debug\Unit26.obj , .\Win32\Debug\Project30.exe , .\Win32\Debug\Project30.map , import32.lib cp32mti.lib , , Project30.res

これらの新しい .bpi ファイルが、お使いのコンポーネントの依存パッケージです。TFDSchemaAdapter の場合は、次の .bpi ファイルがそれに当たります。

   FireDACCommonDriver.bpi FireDACCommon.bpi xmlrtl.bpi dbrtl.bpi FireDAC.bpi FireDACSqliteDriver.bpi

そのため、C++ パッケージ内の TFDSchemaAdapter コンポーネントを使用するには、IDE でこれらの bpi ファイルをそれぞれ '必須' 参照として明示的に追加する必要があります(「パッケージ」を参照)。

DirectX ヘッダー ファイルのダウンロード

Microsoft Windows Platform SDK 内の DirectX ヘッダーのみ付属しています。"d3d.h ファイルが見つかりません" などのエラーが発生した場合、その Object Pascal ユニット用に生成された HPP には #include <D3D*.hpp> が含まれています。以下のいずれかを行うことができます。

  • D3D ユニットを使用しているユニットに {$NOINCLUDE Winapi.D3DX9} 指令を追加し、そのユニットの HPP ファイルを生成し直します。再生成された HPP には #include <Winapi.D3DX9.hpp> が含まれていません。
  • D3D ヘッダーの基になっている DirectX SDK をダウンロードします。DirectX SDK は、Microsoft 社から無償でダウンロードできます。詳細については、「DirectX SDK の場所(Windows)」(英語版)を参照してください。

5~8 バイトの構造体またはセットをパラメータに取るイベントは BCC64 では無効

IDE で生成されるイベントのうち、5 ~ 8 バイトの構造体またはセットをパラメータに取るものは、32 ビット C++ では有効ですが、64 ビット C++ では無効です。 これは、型が値で渡される場合にのみ影響します。型が参照で渡される場合は、Win32 と Win64 で違いはありません。

たとえば、OnContextPopup イベントの TPoint &MousePos パラメータにアクセスすると、アクセス違反が発生します。これは、Win64 プラットフォームでは TPoint &MousePos パラメータが無効だからです。__closure 型宣言に注目すると、Win32 と Win64 で違いがあることがわかります。TControl の PopupMenu イベントの __closure 宣言を以下に示します。

#ifndef _WIN64
typedef void __fastcall (__closure *TContextPopupEvent)(System::TObject* Sender, const System::Types::TPoint &MousePos, bool &Handled);
#else /* _WIN64 */
typedef void __fastcall (__closure *TContextPopupEvent)(System::TObject* Sender, System::Types::TPoint MousePos, bool &Handled);
#endif /* _WIN64 */

Win64 でも Win32 でもコードが動作するためには、IDE で生成されるハンドラを、以下のように条件指令を使って宣言する必要があります。

#ifndef _WIN64
void __fastcall TForm46::FormContextPopup(TObject *Sender, TPoint &MousePos, bool &Handled)
#else
void __fastcall TForm46::FormContextPopup(TObject *Sender, TPoint MousePos, bool &Handled)
#endif
{
  ShowMessage(System::String().sprintf(L"Mouse at (%d,%d)", MousePos.X, MousePos.Y));
}

InterBase

Appmethod 1.17 の一部のエディションに InterBase XE7 エディションが付属している

この注意事項は、Appmethod の旧バージョンと Appmethod 1.17 の両方が同じマシンにインストールされているユーザーを対象としたものです。この注意事項では Appmethod に言及していますが、Object Pascal と Appmethod C++ のエディションも言外に含まれています。

Appmethod の各バージョンには、InterBase のバージョンのライセンスも含まれています。

製品 InterBase バージョン
Appmethod InterBase XE3 Developer エディション
Appmethod InterBase XE3 Developer エディション
Appmethod 1.13 InterBase XE3 Developer エディション
Appmethod 1.14 InterBase XE3 Developer エディション
Appmethod 1.15 InterBase XE3 Developer エディション
Appmethod 1.16 InterBase XE7
Appmethod 1.17 InterBase XE7

これらの Appmethod ライセンス スイートはすべてシステム全体で参照できるので、使用できる InterBase のライセンスは常に 1 つだけです。

たとえば、Appmethod 1.14 に付属していた "InterBase XE3 Developer エディション"を実行している場合は、Appmethod 1.15 に付属している "InterBase XE3 Developer エディション" のインスタンスを同時に起動することはできません。また、Appmethod 1.17 に付属している "InterBase XE7 エディション" のインスタンスを同時に起動することもできません。このインスタンスを起動しようとした場合は、"InterBase のライセンス エラー" であることを通知するエラー ダイアログが表示されます。InterBase のログを調べれば、"Registration file error: License is in use by another instance of InterBase"(登録ファイル エラー: ライセンスは別の InterBase インスタンスで使用中)と記載されています。

InterBase の複数のインスタンス実行についての詳細は、http://docs.embarcadero.com/products/interbase/IBXE7/OpGuide.pdf の「マルチインスタンス」セクションを参照してください。

InterBase のライセンス エラーの回避策

  1. InterBase のインスタンスをすべて停止します。
    このインスタンスを Windows サービスとしてセットアップしてある場合は、それをシステムの[サービス]コントロール パネルでも無効にしてください。
  2. 使用したい InterBase のインスタンスを起動します。今度は、適切なライセンスで正常に起動します。

Appmethod の上記の旧バージョンとそれらでビルドされたアプリケーションは、Appmethod 1.17 と一緒にインストールされる更新版の InterBase XE7 エディションとも連携できます。以前の IDE ツールおよびアプリケーションについては、この InterBase インスタンスへの TCP ループバックを通じて、お使いのデータベースに接続させます。次に例を示します。

localhost/gds_db:<dbpath>

Appmethod の以前のバージョンでは、[ツール|オプション...|環境オプション|環境変数を選択し、ローカル クライアント接続を行うための以下の[ユーザー定義環境変数]エントリを新しく追加してもよいでしょう。

変数
IB_Protocol gds_db
InterBase C:\Program Files (x86)\Embarcadero\Studio\17.0\InterBaseXE7

外部ソフトウェア

Yandex Punto Switcher などのサードパーティ製キーボード切り替えツールが組み込まれている環境でデバッグされたアプリケーションの場合、問題が発生する可能性があります。Windows によりアプリケーションが終了し、アプリケーションでアクセス違反エラーが発生した場合、このアクセス違反エラーは無視してください。

ヘルプ

デフォルトでは、ヘルプ ファイルは以下にインストールされます。

C:\Program Files (x86)\Embarcadero\Studio\17.0\Help\Doc

関連項目

個人用ツール
他言語版