問題タブ [bpl]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
907 参照

windows - すべてのマシンで実行される release .exe をビルドするためのプロジェクト設定

C++Builder XE2 を使用してユーザー インターフェイスのプロトタイプを作成しています。開発者ツールがインストールされているかどうかに関係なく、すべての Windows PC でこのプロジェクトを実行する必要があります。

ユーザーに配布する .exe に必要なすべてのライブラリをリンクして、ユーザーがアプリケーションを実行できるようにするにはどうすればよいですか? プロジェクト オプションのどの設定を設定する必要がありますか?

ユーザーから次のエラーが報告されるようになりました。

ここに画像の説明を入力

0 投票する
2 に答える
1897 参照

delphi - DelphiBPL内のパブリックメソッドとプロパティへのアクセス

単純なフォーム内にあるBPLをロードするアプリケーションがあります。

このフォームは、メインアプリケーションのオプションオプションです。

BPLは正しく読み込まれ、フォームは正しく表示されますが、bpl内のフォームのパブリックメソッドとプロパティにアクセスする方法がわかりません。

誰かが簡単な例を提供できますか?

私のコード:

Tform1の「PublicMthd」にアクセスするにはどうすればよいですか?

0 投票する
3 に答える
2933 参照

delphi - パッケージ (BPL) 自動命名サフィックス

私は Delphi 用の多くのコンポーネントとライブラリを作成していますが、それらのほとんどは、IDE にインストールできるように BPL パッケージを使用する必要があります。

これは非常に簡単で、パッケージ プロジェクト ファイルの単一のセットを (単一のプロジェクト グループで) 維持したいだけでなく、異なる Delphi バージョン用にそれらの同じパッケージをコンパイルして配布したい場合でも、十分に機能します。

これまで、Delphi の各バージョンに対して異なるパッケージ プロジェクトを作成し、Delphi バージョン識別子をサフィックスとして明示的に定義してきました (例: Kinect_XE.bplおよびKinect_XE2.bpl )。

パッケージ プロジェクトの [プロジェクト オプション] の [説明]の下に、フィールドLIB prefixと (私のニーズにとってより重要な) LIB suffixがあることを認識しています。

さらに、 LIB suffixに値を配置すると、コンパイルされた BPL のファイル名の末尾に追加されることも認識しています。

ただし、私の質問は、最初に、IDE が自動的にLIB サフィックスフィールドにIDE/RTL バージョン番号を入力することが可能かどうかということです。

完全なvcl120を入力するのではなく、vclだけを使用して、 vcl120.bplおよび Delphi の各バージョンの対応するもの)を独自のパッケージの(要件として)参照できるように見えるため、これが可能であると確信しています。 . 実際、これは私が達成したいと思っているのと同じ動作です...サフィックスに対応するためにバージョン固有の参照を提供する必要なく、パッケージが相互に (必要に応じて) 内部参照できる場所です。

同様に重要なのは、これを解決することで、単一のプロジェクト グループでプロジェクト ファイルの単一のセットを維持できるようになることです (ただし、XE2 は例外であり、プラットフォームの追加により、以前のバージョンの Delphi でプロジェクト ファイルが必ずしも適切に動作するとは限りません)。)。

LIB サフィックスフィールドに$(VER) (または同様のもの)のような値を入力する必要があるのではないかと思いますが、これはうまくいかないようで、正しい解決策を探して Google を探しました。

あなたが助けてくれることを願っています!

更新 1

現在、(少なくとも) Delphi 2007 から XE2 で使用する IDE プラグインを作成しています。これにより、DLL および BPL プロジェクトにAutoSuffixという新しいオプションが提供されます。Onに切り替えると、AutoSuffixプラグインがインストールされている IDE は、正しい IDE バージョン サフィックスをプロジェクトにすぐに適用します。

AutoSuffixプラグインは、今後 24 時間以内にすべてのユーザーが (無料で) 利用できるようになり、それに応じてこの質問が更新されます。

更新 2

わかりました... Delphi 2007 は面倒です! これまでのところ、AutoSuffix は 2009 から XE2 で動作するようになりましたが、2007 ではもう少し時間が必要です (辛抱強くお待ちください)。

更新 3

Embarcadero は、バージョン間のパッケージの統合を簡素化するという私たちの声を聞いたようです。

マークは、Delphi の将来のバージョンが{$LIBSUFFIX AUTO}機能に対応できるかどうかを確認するために、これを推進する予定です。これが事実であるかどうか、すぐに連絡が来ることを願っています。もしそうなら、それは確かにAutoSuffixが XE2 以前のバージョンで動作する必要がある方法に影響を与えます (現在、単純な AUTO スイッチを提供していないため.. 独自の方法があります)。

EMB がこの要求を真摯に受け止め、今後不可欠な機能として提供し、既存のバージョンでAutoSuffixを使用してすべてのバージョンでプロセスを統一する単純なケースになることを願っています!

0 投票する
7 に答える
9920 参照

delphi - デバッグ時にDelphiアプリに「デバッグ情報がありません」

パッケージとコンポーネントを使用するアプリケーションを構築しました。アプリケーションをデバッグするとき、IDEの「イベントログ」には、デバッグ情報なしでBPLがロードされていることが示されることがよくあります(「デバッグ情報なし」)。すべてのパッケージとEXEはデバッグで構築されているため、これは意味がありません。

4つのプロジェクトがあり、すべてランタイムパッケージで構築されています。

  1. Core.bpl
  2. Components.bpl
  3. Plugin.bpl(#1と#2の両方を使用)
  4. MainApp.exe(#1を使用)

観察された問題

1)デバッグするとき、多くの場合、Components.bplにはデバッグ情報がロードされますが、[ローカル変数]ウィンドウのすべての値が空白になります。コード内の変数の上にマウスを置くと、ポップアップは表示されず、[評価]ウィンドウにも何も表示されません([結果]ペインは常に空白です)。

2)さまざまなBPLのイベントログに「デバッグ情報なし」と表示されることがあります。たとえば、Plugin.bplプロジェクトをアクティブにして、Run | パラメータのホストアプリケーションをMainApp.exeにして、F9キーを押すと、Plugin.bplモジュールを除くすべてのモジュールが「デバッグ情報あり」でロードされているように見えます。ロードすると、イベントログに「デバッグ情報なし」と表示されます。ただし、アプリを閉じてすぐにF9キーを押すと、何も再コンパイルせずにアプリが再度実行され、今回はPlugin.bplにデバッグが読み込まれます(「デバッグ情報があります」)。

質問

1)「ローカル変数」ウィンドウに値が表示されない原因は何ですか?

2)BPLがデバッグに準拠していて、すべてのデバッグファイル(dcu、mapなど)が使用可能な場合、BPLがデバッグ情報なしでロードされることがあるのはなぜですか?

0 投票する
0 に答える
371 参照

delphi - Delphi XE Datasnap: DSServerModule が動的にロードされるとサーバー メソッドが見つからない

起動時にディレクトリをスキャンし、BPL (DSServerModules を含む) をロードし、リモートから使用できるように登録する Datasnap Server (DBX) があります。

プリミティブ型 (整数、文字列など) を使用する関数とプロシージャではすべて正常に機能しますが、クライアントからは、「構造化された」変数を持つメソッドが表示されません。

たとえば、 (例で見たように) TJSONValueを返す関数を追加しようとしましたが、メソッドはクライアントから見えません。

奇妙なことに、DSServerModule がプロジェクトに静的に追加された場合、同じ機能が使用可能 (かつ動作) です。

推測はありますか?

非常に大きなプロジェクトの一部であるため、コードは添付しませんでした。必要に応じて、小さな例を提供します。

乾杯、ミルコ

0 投票する
0 に答える
300 参照

delphi - スタンドアロン アプリで bpl からコンポーネント名を取得する方法

Classes.GetPackageInfoパッケージに必要なすべてのユニットとパッケージを列挙できます。しかし、次のような Proc が必要です。

Designtime パッケージからすべての IDE コンポーネントを取得します。
そして、それは一般的な方法である可能性がありますか?例えば。VC アプリからこのプロシージャを呼び出しますか?

0 投票する
3 に答える
2240 参照

delphi - 特定の DLL、EXE、または BPL に必要な BPL のリストを取得する

特定の (コンパイルされた) DLL、EXE、または BPL に必要な BPL を特定する洗練された方法を誰かが知っているかどうか疑問に思っています。

これが、単にバイナリをスキャンして.bplファイル名へのテキスト参照を探すことを恥じている可能性があるかどうかはわかりません (これは、誤検知の可能性が高くなる可能性があります)。

理想的には、必要なすべての.bplファイルの名前を含む、TStringListまたはコンマ区切りを返したいと思います。String

0 投票する
1 に答える
2352 参照

delphi - Delphi XE で BPL が見つからない

Delphi XE で問題が発生しています。QRDesign (QuickReports の一部) を使用するプロジェクトがあります。

QRDesign を使用するユニットを表示すると、次のエラーが表示されます。

「コンピューターに QRDBASE_DXE.bpl が見つからないため、プログラムを開始できません。この問題を解決するには、プログラムを再インストールしてください。」

ユニットを開かない場合、すべてが正常にコンパイルされます。

興味深いことに、これと別のパッケージ (dclqrd_DXE.bpl - QRDesign の一部) をアンインストールして IDE を再起動し、これらのパッケージを再コンパイルして再インストールすると、IDE を再起動するまですべてが機能します。BPL は検索パスにあり、各ファイルのコピーは 1 つだけ存在します。

この問題を引き起こしている可能性のあるメカニズムを知っている人はいますか?

0 投票する
3 に答える
32555 参照

delphi - BPL がロードされないが、既に再コンパイルされている場合の Delphi BPL パッケージの問題の解決 (Windows VirtualStore ファイルシステムの問題)

私の一般的な質問は、「どれだけクリーンアップして再コンパイルしても、消えない依存関係が原因で BPL がロードされない」のトラブルシューティング方法です。 更新クリーンに再コンパイルされたシステムを持っていると思うかもしれませんが、Windows とそのファイル システム仮想化の誤機能という逆の奇跡のおかげで、そうではありません。

デザインタイムパッケージ(この場合は という名前dclFsTee.bpl)を Delphi IDE(高速レポート 4 ティーチャート ラッパー コンポーネント パッケージ)にロードしようとすると、次のようにエラーが表示されます。

それtee7100.bplは、私が知っているシステム上のどの DCP または DCU ファイルでも参照されていません。しかし、明らかに何かがおかしいので、問題が見つかりません。

すべての Delphi ユーザーは、BPL に関する「コンパイルできない、または読み込まれない」問題に直面しています。何をすべきかと尋ねられたときの一般的なリフレインは、コンピューターをクリーンアップすることです。

しかし、私は今、何時間もかけてコンピューターのクリーンアップを行ってきました。すべてのファイルがコンパイルされている間に、古いバージョンの何かがどこかに隠れていることは明らかです。数日前にこのシステムから削除した TeeChart BPL と、見つけたすべての痕跡。

私が削除した Delphi 2007 の TeeChart の痕跡には、$(BDS)\Lib および $(BDS)\Lib\debug フォルダー内のすべてと、システム上のすべての DCP および BPL フォルダーが含まれています。また、すべての TeeChart ユニット名の dcu ファイルがなくなりました。

道の終わりにたどり着いたら、次に何を試しますか? (ハードドライブをフォーマットし、新しいコンピュータを購入してください。) マジで。私は頭の良い人だと思いますが、1 TB のハード ドライブ、80 以上のフォルダーに実行されるライブラリ パス、およびよく整理されているように見えるソース コード リポジトリを持っていますが、明らかに何かが隠れています。それを見つける。

完全なソース コードを含む TeeChart Standard 2012 を使用しています。私の知る限り、私の開発マシンには、デルファイに同梱されている「ティー チャート tee7100.bpl」バージョンの古い TeeChart BPL または DCP ファイルが含まれていません。

Teechart に付属の "recompile.exe" ウィザードを実行しました。これは、tee.inc ファイルに {$DEFINE x} 宣言を記述した後、MSBuild を実行してパッケージをビルドするように見えます (ソースには 2 つあります)。分布)。

しかし、どういうわけか、パッケージの 1 つへの暗黙的なインポートの 1 つが、再構築されていない古いファイルを描画しているように見えます。そのため、tee7100.bpl をロードしようとします。新しい bpl 名は、tee911.bpl です。

かなり具体的な高速レポートの質問をするのではなく、Delphi での開発中に何十回も直面した一般的な傷の世界の特定の例として言及しているだけです。

高速レポートの詳細のみを提供しているので、これは実際には、依存関係のあるコンポーネント ソース コードまたはパッケージ、またはパッケージのセットを扱うときに Delphi IDE 内で時々直面する一般的な問題の特定のインスタンスであることがわかります。 . コードがビルドされるようにコンピューターをクリーンアップするのは難しい場合があります。

だから、ここに私のDelphiパッケージからパッケージへの依存関係解決の質問があります:

  1. 私のコード(問題なくビルドおよびコンパイルされます!)が実際に Delphi IDE にロードされるように、不要になった BPL の暗黙的なロードの問題を見つけたり追跡したりする最も効果的な方法は何ですか。Recompile を実行した結果の BPL ファイルは、適切な DCP ファイルに正しくリンクしているように見え、古い/古い DCP または DCU ファイルは存在しません。たとえば、新しい DCP ファイル名は、tee911.dcp です。

  2. どうにかして、どのパッケージが実際に古くなっているか、.bpl がリンクされているときに何が読み取られ、リンクされ、静的にインポートされているかについて、何らかの考えを得ることができますか? (BPL ファイル用の特別な MAP のようなファイルのように考えているのでしょうか?)

更新これと何時間も格闘し、私が知っているすべてのトリックを使用した後、Windows 7 のファイル仮想化に起因するいくつかの関連する問題を確認しVirtualStoreていないことに気付きました.つまり、Windows 7 はその上で実行されるプログラムに嘘をついている. それはあなたが望むものではない別のバージョンのファイルを提供します。これはいくつかの点で致命的です。1; BPL を再コンパイルしますが、それはロードされません。私を殺していた BPL は、VirtualStore の一部である SysWow64 フォルダーにありました。仮想ストアは、基本的に、Win7/64 ビットの Delphi 2007 のように、特定の「権限の低い」プログラムである場合にのみ存在するファントム ファイルを表示することに注意してください。現在のユーザー アカウントの SysWow64 VIRTUALSTORE フォルダーにある BPL ファイルを削除するには:

... Windows アーキテクチャが嫌いな日もあります。とにかく、私は上記を答えにするつもりはありません.

0 投票する
1 に答える
2805 参照

c++ - プロジェクト パッケージのビルド C++ ビルダー

C++ Builder で GUI フォーム アプリケーションを作成しましたが、別のコンピューターで .exe を実行できるようにしたいと考えています。

別のコンピューターで .exe を実行しようとすると、いくつかの .bpl エラーが発生します。

必要なファイルを持たないコンピュータで .exe を実行できるように、必要なすべてのファイルを「パッケージ」に結合するにはどうすればよいですか?

Project->Deployment を実行すると、.bpl ファイルを含むファイルのリストが表示されました。とはいえ、ここからどうするか。

ありがとう