2017-01-28 40 views
1

私はfiremonkeyで動作する必要があるプロセス間通信のいくつかの並べ替えを探して絶望的です。Delphi firemonkeyプロセス間通信はどういうわけかできますか?

私はいくつかのプロジェクトをWin32/64からfiremonkeyに変換しています。私は小規模なアプリケーションとメインアプリケーションの間で通信してデータを交換するためにIPCを使用しました。

私はcromis ipcを使用しましたが、firemonkey/osxには移植されていません。同様のものは見つかりません。

「クライアント」アプリケーションは、コマンド(文字列)を送信するには、「メインアプリケーション」:

プロセスはこれです。メインアプリケーションはこの文字列を解釈し、コマンド(文字列)に基づいてデータを返します。

誰も私がこれをどのように実現できるか考えていますか?

+0

FireMonkeyはクロスプラットフォームですが、IPCは主にプラットフォーム固有です。クロスプラットフォームのIPCライブラリを使用しない限り、(多かれ少なかれ)均一なAPIを備えた唯一の実際のクロスプラットフォームIPCソリューションは、BSDソケット経由のTCP/UDPです。その他のプラットフォーム固有のオプションには、パイプ、シグナル、メールスロット/メールボックス、メッセージキュー、共有メモリなどが含まれます。 –

+1

多分アプリケーションテザリングですか? –

答えて

2

あなたは、あなたが望むことを行うための1つの方法であるDelphiのDataSnapテクノロジに遭遇していないことがあなたの質問から聞こえます。

はあなたのDelphi

サンプル\ Object Pascalの\ DataSnapの\ 基本 FireDAC

フォルダの下に見つけることができます例えば、サーバ+クライアントを見てみましょう。

これを試してみるには、サーバーをコンパイルして実行し、サーバーを実行してクライアントをコンパイルして実行する必要があります。 DataSnapはデータベースとデータセットだけではありません。 FireDACフォルダ内のサーバー+クライアントは、サーバーのServerMethodsUnitが

TServerMethods = class(TDSServerModule) 
    [...] 
public 
    { Public declarations } 
    function EchoString(Value: string): string; 
    function ReverseString(Value: string): string; 
    function StreamGet: TStream; 
    procedure StreamPost(AStream: TStream); 
end; 

含ま ことを見つけると、あなたはFMXクライアントからこれらのメソッドを呼び出すことができます - クライアントの ClientUnitでButton1Clickハンドラを参照してください、だから、それはあなたがコメントで必要と正確に何ができる、すなわちクライアントからサーバに文字列を送信し、サーバーが戻って文字列を渡す必要があり、このコード

procedure TClientForm.Button1Click(Sender: TObject); 
var 
    AString: string; 
begin 
    AString := InputBox('Reverse String', 'Enter a String', ''); 
    if AString <> '' then 
    begin 
    FDStoredProcReverse.Params[0].Value := AString; 
    FDStoredProcReverse.ExecProc; 
    ShowMessage(FDStoredProcReverse.Params[1].AsWideString); 
    end; 
end; 

が含まれています。 DataSnapはFireMonkeyとVCLで動作し、TCPまたはHttpをトランスポートとして使用できます。

あなたは

DataSnapのホワイトペーパーに

をグーグル場合は最初のヒットは、Delphi 2009で導入された「現代」のDataSnapのバージョン& 2010年については、ホワイトペーパーでなければなりません残念ながら、リンクがにありますエンバカデロのEDNサーバーは、週末になることが多いため、ここ(イギリス)の瞬間にダウンしているようです。

+0

すぐにエラーTDSServerが見つからないか、そのようなものがあります。また、何らかのデータベースが必要なように見えます。私がやりたいことはすべて集中的です。私は単にメインアプリケーションに文字列を送りたいと思っていて、それは私に文字列を送ってきました。それを行うには、いくつかの簡単な方法がありますが、少なくとも私はそう望みます。 – Softtouch

+0

FireDACの例を試してみてください。答えを更新しました(もちろん、クライアントを試している間にサーバーを稼働させておく必要があります。新しいスタイルのDataSnapでは、クライアントからの接続が自動的に開始されませんD7形式のDCOMやScktSrvrに使用されていたサーバ、Exeのやり方など)。 – MartynA

+0

FireDacの例題を開くことができません。「Class TFDPhysDSDriverLink not found」が表示されます。プロジェクトを開くとき。マルチプラットフォームのIPCコンポーネントは、市販されているか無料で入手できますか? – Softtouch

関連する問題