Delphi firemonkey进程间通信是否可能?
我急切地寻找某种进程间通信,它必须与firemonkey一起工作 我正在将一些项目从Win32/64转换为firemonkey,我使用IPC在较小的应用程序和主应用程序之间进行通信,以交换数据 在Win-only版本中,我使用了cromis ipc,但它没有移植到firemonkey/osx,我只是找不到类似的东西 过程如下: “客户端”应用程序向“主应用程序”发送命令(字符串)。主应用程序解释此字符串并根据命令返回数据,也就是字符串Delphi firemonkey进程间通信是否可能?,delphi,ipc,firemonkey,Delphi,Ipc,Firemonkey,我急切地寻找某种进程间通信,它必须与firemonkey一起工作 我正在将一些项目从Win32/64转换为firemonkey,我使用IPC在较小的应用程序和主应用程序之间进行通信,以交换数据 在Win-only版本中,我使用了cromis ipc,但它没有移植到firemonkey/osx,我只是找不到类似的东西 过程如下: “客户端”应用程序向“主应用程序”发送命令(字符串)。主应用程序解释此字符串并根据命令返回数据,也就是字符串 有人知道我是如何实现这一点的吗?从您的问题中可以看出,您还没
有人知道我是如何实现这一点的吗?从您的问题中可以看出,您还没有接触到Delphi的DataSnap技术,这是实现您所希望的一种方法 看看您将在Delphi下找到的示例服务器+客户机 Samples\Object Pascal\DataSnap\BasicFireDAC 文件夹 您需要做的是编译并运行服务器,在服务器仍在运行的情况下编译并运行客户端。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,其中包含此代码
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;
procedure TClientForm.button1单击(发送方:TObject);
变量
绷带:弦;
开始
AString:=InputBox('反向字符串','输入字符串','');
如果使用“”则
开始
FDStoredProcReverse.Params[0]。值:=AString;
FDStoredProcReverse.ExecProc;
ShowMessage(FDStoredProcReverse.Params[1].AsWideString);
结束;
结束;
因此,它可以完全按照您在评论中所说的做,即从客户端向服务器发送一个字符串,并让服务器返回一个字符串。
DataSnap与FireMonkey和VCL配合使用,可以使用TCP或Http作为其传输
如果你谷歌
数据捕捉白皮书
第一个热门话题应该是关于Delphi 2009和2010中引入的“现代”DataSnap版本的白皮书。不幸的是,链接到Embarcadero的EDN服务器,但目前(英国)的链接似乎已关闭,因为周末经常出现这种情况。FireMonkey是跨平台的,但IPC主要是特定于平台的。除非使用跨平台IPC库,否则唯一具有(或多或少)统一API的真正跨平台IPC解决方案是通过BSD套接字的TCP/UDP。其他特定于平台的选项包括管道、信号、邮件槽/邮箱、消息队列、共享内存等。可能是应用程序连接?我立即发现一个错误TDSServer not found或类似的错误。它看起来还需要某种数据库。这就是我想做的一切。我只想向主应用程序发送一个字符串,这会将一个字符串发回给我。肯定有一些简单的方法可以做到这一点,至少我希望如此(当然,您需要在尝试客户端时运行服务器-在新样式的DataSnap中,从客户端请求连接不会自动启动服务器,因为它使用D7样式的DCOM或ScktSrvr,Exe方式进行操作)。我无法打开FireDac示例,我得到了“未找到类TfDphysDsdDriverLink”在打开项目时。是否有任何多平台IPC组件可用,商用或免费?