問題タブ [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.
delphi - BPL 関数から文字列を返す
BPL からエクスポートされる関数 (以下に簡略化) を持っている
LoadPackage を使用してメイン プログラムからロードされ、GetProcAddress は他の関数に対して正常に機能します。しかし、これは呼び出されたときに多くのエラーを引き起こします。
BPL とともに使用されます (簡略化)
.
プロシージャの最後に発生するように見える例外ですが、修正されたテキストは intoStr に返されます (ブレーク ポイントで表示)
エラーは、Info パラメータが var および/または文字列であることと関係がありますか?
エラーメッセージは
プロジェクト Project1.exe で例外クラス EInvalidPointer が発生し、「無効なポインター操作」というメッセージが表示されました
ありがとう
詳細 > 同じ bpl/ユニットからの別の機能は正常に動作します
マッドエクセプト>
例外クラス: EInvalidPointer 例外メッセージ: 無効なポインタ操作です。
メイン スレッド ($1b7c): 0040276f +013 Project1.exe システム @FreeMem 00404650 +01c Project1.exe システム @LStrClr 00483814 +15c Project1.exe Unit1 97 +11 TForm1.Button3Click 00462430 +064 Project1.exe コントロール TControl.Click 0045a870 + 01c Project1.exe StdCtrls TButton.Click
delphi - BPL を使用した Delphi オブジェクト ランタイムのロード
私はユニットでクラスを持っています。通常、そのメソッドのアルゴリズムを変更すると、それを再コンパイルして、パッチ全体を配布する必要があります。DLLを使ってクラスのインスタンスを作成しようと思います。delphi.about.com で検索したところ、DLL を使用する代わりに BPL を使用できることがわかりました。Delphi 用の DLL です。問題は、私が見つけたほとんどすべての例が、関数をエクスポートする方法のみを示していることです。BPL を動的にロードしたいのですが、BPL を置き換えるたびに、エクスポートする関数だけでなく、クラスの最新のアルゴリズムを取得できます。
私が読んだ記事:
- http://delphi.about.com/od/objectpascalide/a/bpl_vs_dll.htm
- Delphi アプリケーションのプラグイン システム - bpl vs dll?
- http://delphi.about.com/library/weekly/aa012301a.htm
コンポーネントまたはクラスをカプセル化するために BPL をゼロから作成する方法の URL またはサンプルは大歓迎です。
親愛なる達人へ
次のようなコードがあるとします。
A のパブリック メソッドをすべてエクスポートしたいのですが、どうすれば DLL にできますか? インポート先の別のユニットから使用する方法は? まあ言ってみれば:
A はユニットで宣言されていません (DLL 内にあります)。お知らせ下さい。
万歳。昨夜手に入れました。私がしなければならないのは、DLL によって返されたオブジェクトのインスタンスをキャッチするために呼び出し元ユニットで使用されるインターフェイスをオブジェクトに実装させることだけです。
皆さん、ありがとうございました。
delphi - rtl100.bpl が見つかりませんでしたか?
TMS からコンポーネントを学習しています。「...rtl100.bplが見つかりませんでした...」というメッセージが表示されました。「rtl」を含む「Build with runtime packages」を使用すると、おそらくこのエラーが発生しました。
rtl100.bpl はどこにありますか (私は D2007 を使用しています)? このエラーを修正するにはどうすればよいですか?
delphi - Delphi プラグイン フレームワーク
Delphi プラグイン フレームワークを設計したいと考えています。3 つのオプションがあります。
1. DLL
2. BPL
3. COM インターフェイス
すべてのオプションにはいくつかの欠点があります。
DLL - MDI アプリケーションの問題、プラグインからのフォームをホスト exe - mdi アプリケーションに埋め込むことができない。
BPL - すべての *.bpl プラグインと *.exe ホスト アプリケーションは、同じバージョンの Delphi でコンパイルする必要があります。
COM - インターフェース {xxx-xx-xxx-xx} はシステムに登録する必要があります (regsvr) したがって、プラグイン フレームワークは移植できません!
私が上に書いたことはすべて真実ですか?そうでない場合は、私を修正してください、または他の可能性はありますか?
ありがとう
delphi - ランタイムパッケージでビルドを有効にせずにDelphiDLLを使用する方法
最近、非常に多くのフォーム、フレーム、および追加のコントロールを使用してプロジェクトを開始したため、アプリケーションが膨張し、プロジェクトで3つのexe(すべてDelphi 2009で作成)を使用しています。これらのアプリケーションも同じフレームとフォームを共有しています。だから私はこれらのフォームを共有するためにdllを使用しました。
しかし、別のTfontエラーという問題が発生しました。だから私はオンラインで参照し、選択するという答えを持ってきました| ランタイムパッケージを使用してビルドします 。その後、すべてが完璧に機能し始めました
しかし、私がウィンドウズのタスクマネージャーをチェックしたとき| memusageは約21500kb(21.5 mb)です(ただし、memの使用量はランタイムパッケージを使用したビルドなしでわずか2000 kbであり、3つのexeプロジェクトすべてに追加して手動でフレームを含めることもできます)。ランタイムパッケージ
そして今、私は3つのexe +delphibplランタイムパッケージ+dllでプロジェクトを配布する必要があります
しかし、メモリがどのように増加したかを知りたいので、3つのexe + dllのみを配布したい(通常のdelphi exeがどのように配布されるか)メモリマネージャーを使用したことがありますが、機能しませんでした
この問題を克服する方法
これは私が使用したコードです
exeファイルで
dllで
そして最後に、ランタイムパッケージを使用してビルドせずにこれらすべてを実行する方法
メモリの問題以上に、buildwithruntimeパッケージなしでそのようなアプリケーションを作成する方法を教えてください
delphi - ランタイム パッケージを使用したビルドなしの delphi exe および dll
私の最後のプロジェクトでは、Delphi アプリケーションで多くのフレームを使用していたので、dll を作成して dll 内に配置することにしました (すべて Delphi で作成されました)。
私は多くのWebサイトを調べて、機能するコードを思いつきましたが、その例では、アプリとdllの両方をランタイムパッケージでビルドしてコンパイルする必要があります。つまり、bplも配布する必要があります。ランタイムパッケージでビルドをチェックしないと、エラーが発生します
これは私が見つけたコードです
実行中
dllで
それだけですが、ランタイムパッケージなしでこのコードを動作させたいです
delphi - BPLからアプリケーションにTframeをロードします
メインアプリに表示されるdelphiパッケージ(bpl)内にtframeをロードしようとしていますが、パッケージとアプリケーションの両方のコードを教えてください。
delphi - ランタイム パッケージを使用してビルドするときにプログラムのメモリ使用量を減らすにはどうすればよいですか?
私は常に「ランタイムパッケージでビルド」せずにデルファイアプリをコンパイルしますが、最新のプロジェクトではそれを使用する必要がありました(日に日に膨らみ始めたため)。サードパーティの VCL を使用しています (ソース コードを含む TMS コンポーネント パック、ソース コード ディレクトリも検索パスにあります)。
ランタイムパッケージでビルドしてコンパイルすると、bplパッケージ全体が実行時にアプリによって使用されます(そうでない場合、パッケージ内の必要なvclのみをアプリに準拠させます)ので、多くのRAMメモリを消費すると思います(通常、私のアプリは38 MbのRAMを使用しますが、現在62 Mb (Windows タスク マネージャーによると、tms だけでなく、他の多くの vcl も使用しています)。
単一のexeとしてコンパイルされたように、アプリのメモリ消費量を少なくする方法はありますか?
(必要な vcl のみを使用して VCL パッケージを再コンパイルすることは知っていますが(ソースを持っています)、ソースを掘り下げて必要な vcl とサブプログラムを見つけるのは難しすぎます)
delphi - パッケージからフレームをロードする
私は別々の3つのbplsの中に3つのフレームを持っています、
私のメインアプリケーションでは、3つのボタンを作成しました。それぞれのボタンがクリックされたときに、フレームを動的に(一度に1つずつ)呼び出したいです(フレームは任意のコントロールに表示できます。例:TPanal)
私はすでにDLLを使用してそのようなことをしましたが、Stackオーバーフローコミュニティの一部は私にbplを使用するように勧めました(彼らはそれが簡単だと言っていました)、 私の以前の投稿
delphi - BPL ファイルには実行時パッケージが必要です!
パッケージを作成しました。パッケージの BPL ファイルを使用したいのですが...
私のパッケージには必須ライブラリとして VCL.dcp と RTL.dcp があります。このパッケージをアプリケーションにロードしてもエラーは発生しませんが、アンロードしようとすると、アクセス違反が表示されます。
ランタイム パッケージ ("vcl" および "rtl") を使用してアプリケーションをビルドすると、アクセス違反が表示されません。
これはどういう意味です ?!私のアプリケーションは、BPL をロードするために VCL と RTL ライブラリが必要ですか?! パッケージを DLL ファイルのようにロードしたいのですが、解決策はありますか?
Delphi 2010 を使用しています
どうもありがとう ...