首页 行业资讯 宠物日常 宠物养护 宠物健康 宠物故事

实现这样的功能,用indy,ics还是原生socket好

发布网友 发布时间:2022-04-22 06:15

我来回答

4个回答

热心网友 时间:2023-08-27 08:11

你得再具体说下是一个程序的两个窗体,还是两个不同的程序。

1:同一程序就简单多了,弄个公共变量或直接访问另一窗体,因为delphi窗体在同一程序里都是以公共变量申明的。只要USES 上相应单元即可。

如 uses unit1;

然后窗口2里直接用 Label1.caption := Form1.Label1.caption;

2: 不同程序的话,稍微复杂一点点,方法也比较多,一是发窗口消息(SendMessage),二是SOCKET通信,但要开端口,不推荐,三是创建共享内存,这是最佳方法,详细的可以参见以下两个API (用法可查百科),OpenFileMapping,CreateFileMapping。
还有其他的方法,比如通道。原子之类的都可以达到类似效果。

热心网友 时间:2023-08-27 08:11

在窗体2中定义 一个public 的过程

public
procere SetLabel(strleb ; string);

//过程实现
procere SetLabel(strlab ; string);
begin
label1.caption := strlab;
end;

//如果报错
再定义一个私有变量
m_str : string;

函数内容改为
m_strlab:= strlab;

在窗体显示事件中
label1.caption ;= m_strlab

然后先调用过程
SetLabel(值);就OK了.

热心网友 时间:2023-09-22 12:54

你得再具体说下是一个程序的两个窗体,还是两个不同的程序。

1:同一程序就简单多了,弄个公共变量或直接访问另一窗体,因为delphi窗体在同一程序里都是以公共变量申明的。只要USES 上相应单元即可。

如 uses unit1;

然后窗口2里直接用 Label1.caption := Form1.Label1.caption;

2: 不同程序的话,稍微复杂一点点,方法也比较多,一是发窗口消息(SendMessage),二是SOCKET通信,但要开端口,不推荐,三是创建共享内存,这是最佳方法,详细的可以参见以下两个API (用法可查百科),OpenFileMapping,CreateFileMapping。
还有其他的方法,比如通道。原子之类的都可以达到类似效果。

热心网友 时间:2023-09-22 12:54

在窗体2中定义 一个public 的过程

public
procere SetLabel(strleb ; string);

//过程实现
procere SetLabel(strlab ; string);
begin
label1.caption := strlab;
end;

//如果报错
再定义一个私有变量
m_str : string;

函数内容改为
m_strlab:= strlab;

在窗体显示事件中
label1.caption ;= m_strlab

然后先调用过程
SetLabel(值);就OK了.

热心网友 时间:2023-09-22 12:55

在unit2的uses 里面引用 unit2
并在窗体2按钮内写 label1.caption := form1.label1.caption;
大概是这样

热心网友 时间:2023-09-22 12:55

看你这个图,应该是说两个应用程序的传值问题,提供两个方法:
一 用socket编程(可以用indy、ics、serversocket等组件实现),传递值到目标程序
二 用内存映射,让目标程序读取共享内存
不管哪一种方法,对新手来说都不简单,编码量也不会很少,所以具体实现代码你去查下相关知识点

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com