問題タブ [datamodule]

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 投票する
0 に答える
150 参照

delphi - TTetheringManager を適切に削除するには?

Firemonkey アプリケーション間の通信を実現するためにアプリ テザリングを開始しようとしていますが、使用に問題があります。TDataModule特に、 aを含む aの作成と削除がTTetheringManager期待どおりに機能しないようです。

新しいクロスプラットフォームの Firemonkey アプリを作成し、DataModule を追加しました。コンパイラは bcc32c (CLANG C++11) です。DataModule にTTetheringManagerTTetheringAppProfileコンポーネントを配置し、 のプロパティManagerTetheringAppProfile1に設定しますTetheringManager1

DataModule のコンストラクタであるデストラクタで、次のことを行います。

メイン フォームにボタンを配置し、OnClickイベントに次のコードを追加しました。

削除するDataModuleと無効なポインター操作が発生するSystem.pasことがあります。メモリを解放しようとしてキャンセルされたスレッドがあるようです。

:7702c54f KERNELBASE.RaiseException + 0x58
:0040E151 System::TObject::FreeInstance(Self=????)
:0040E151 System::TObject::FreeInstance(Self=????)
:004D7F7C System::Classes::ThreadProc (Thread=:0293BA00)
:0040FF1A System::ThreadWrapper(Parameter=:02966B20)
:753e338a kernel32.BaseThreadInitThunk + 0x12
:776d9902 ntdll.RtlInitializeExceptionChain + 0x63
:776d98d5 ntdll.RtlInitializeExceptionChain + 0

作成と削除を 2 つの異なるボタン イベント ハンドラに分割すると、正常に動作しますが、これは必要なものではありません...

これを解決するために次のことを試みましたが、成功しませんでした。

  • OnEndManagersDiscovery呼び出し中にイベントを待ってApplication->ProcessMessages()から削除するDataModule
  • Sleep(0)削除する前に電話するDataModule
  • Sleep(0)のデストラクタを呼び出すDataModule
  • C++Builder のバグを除外するために、Delphi で同様のプロジェクトを作成しました。C++ アプリケーションと同じ動作。

私はこれに何時間も取り組んでいますが、なぜこれがうまくいかないのかわかりません...

編集

異なるボタンの OnClick ハンドラからコンストラクタとデストラクタを呼び出しても、常に機能するとは限りません。削除ボタンをクリックする速さによって異なります。

検出手順は別のスレッドで行われます。このスレッドの同期に問題があると思います。CancelDiscoverManagers発見プロセスを完全に終了していないようです。

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

delphi-10.1-berlin - Delphi 10.1 で DataModule を作成する方法

マルチデバイス アプリケーションで非表示コンポーネント用の DataModule を作成しようとしましたが、アプリがコンパイルされず、次のエラーが表示されます。

ここに画像の説明を入力

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

delphi - ImageCollection in a package gives error reading sourceImages

I have an ImageCollection in a DataModule in a package. It gives this error when the application starts. (Delphi Alexandria, Win 10, up to date.)

enter image description here

Is the solution to remove the datamodule from the BPL or to CoInitialize (and if so, how??)

THanks