gpt4 book ai didi

Delphi firemonkey进程间通信有可能吗?

转载 作者:行者123 更新时间:2023-12-02 01:35:23 25 4
gpt4 key购买 nike

我迫切需要某种进程间通信,它必须与 firemonkey 配合使用。

我正在将一些项目从 Win32/64 转换为 firemonkey,并使用 IPC 在较小的应用程序和主应用程序之间进行通信以交换数据。

在仅限 Win 的版本上,我使用了 cromis ipc,但它没有移植到 firemonkey/osx,而且我找不到类似的东西。

流程是这样的:

“客户端”应用程序向“主应用程序”发送命令(字符串)。主应用程序解释此字符串并根据命令返回数据,也是字符串。

有人知道我如何实现这一点吗?

最佳答案

从您的q 看来,您还没有接触过Delphi 的DataSnap 技术,这是实现您所说的目的的一种方法。

看一下 Delphi 下的示例服务器 + 客户端

示例\Object Pascal\DataSnap\基本FireDAC

文件夹。

要尝试一下,您需要编译并运行服务器,并在服务器仍在运行的情况下编译并运行客户端。 DataSnap 不仅仅涉及数据库和数据集:如果您看一下例如FireDAC文件夹中的Server + Client,你会发现服务器的 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 客户端调用这些方法 - 请参阅中的 Button1Click 处理程序客户端的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;

因此它可以完全按照您在评论中所说的方式进行操作,即从客户端向服务器发送一个字符串,然后让服务器传回一个字符串。DataSnap 与 FireMonkey 和 VCL 配合使用,可以使用 TCP 或 Http 作为其传输。

如果你用谷歌搜索

datasnap 白皮书

第一个点击应该是关于 Delphi 2009 和 2010 中引入的“现代”DataSnap 版本的白皮书。不幸的是,该链接是 Embarcadero 的 EDN 服务器,但目前似乎已从这里关闭(英国)就像周末一样。

关于Delphi firemonkey进程间通信有可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41909849/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com