当前位置: 首页 > news >正文

DDE方式下Delphi7程序间及与VB6程序的数据交换

WINDOWS平台的DDE功能,为不同应用程序间数据实时交互提供了简便的方法。下面的内容,是我的具体实践。

1. Delphi7程序间的DDE数据交互

DDE SERVER和DDE CLIENT做到了同一个程序界面下,将其分成两个不同程序是同样的方法,只不过做在一个程序界面下更简便。

DDE换有三个重要因素:SERVICE、TOPIC和ITEM,这是DDE本身定义的,与编程语言无关。就是说无论用什么语言编程,都要操作DDE的这三个核心要素。

DELPHI下DDE编程,程序名就是SERVICE名,DdeServerCon就是TOPIC,DdeServerItem就是ITEM,其内容就是用于交互的数据,比如文本框中的内容或其它变量中的内容,使用的是文本方式。

在FORM上,将Server和Client控件同时摆放好。

Server端的两个控件配置时,将SERVER控件的名称填到SERVERITEM控件的ServerConv处;Client端的两个控件用类似的方法配置。

控件配置好后,在窗体上放置一个TIMER,每秒更新一下EDIT1控件的内容,同时更新DdeServerItem1的TEXT成员的内容。

  Edit1.Text := FormatDateTime('hh:mm:ss', now);
  DdeServerItem1.Text := Edit1.Text;

接下来在COMMAND1下,进行DDE连接。如果控件属性没填写,还可以在程序中完成。

    try
        DdeClientItem1.DdeConv := DdeClientConv1;
        if (DdeClientConv1.SetLink('Project1','DdeServerConv1') = False) then
        begin
            ShowMessage('Unable to connect DDEserver!');
            Exit;
        end;
        DdeClientItem1.DdeItem := 'DdeServerItem1';
        DdeClientConv1.OpenLink;
    except
    end;

上面的程序一是设置连接SetLink,然后是让DdeClientConv去OpenLink,可以清楚地看到SERVICE和TOPIC的表示 'Project1','DdeServerConv1'

一旦建立连接,SERVER端EDIT1中的内容,可以在CLIENT端自动同步。用的是DdeClientItem控件中的DdeClientItem1Change事件驱动的。

procedure TForm1.DdeClientItem1Change(Sender: TObject);
begin
  Edit2.Text := DdeClientItem1.Text;
end;

DELPHI简单的DDE实时数据交换就完成了,下面是完整代码。

unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, ExtCtrls, StdCtrls, DdeMan;typeTForm1 = class(TForm)DdeServerConv1: TDdeServerConv;DdeServerItem1: TDdeServerItem;DdeClientConv1: TDdeClientConv;DdeClientItem1: TDdeClientItem;Button1: TButton;Edit1: TEdit;Edit2: TEdit;Timer1: TTimer;Button2: TButton;Label1: TLabel;Label2: TLabel;procedure Timer1Timer(Sender: TObject);procedure Button2Click(Sender: TObject);procedure Button1Click(Sender: TObject);procedure DdeClientItem1Change(Sender: TObject);private{ Private declarations }public{ Public declarations }end;varForm1: TForm1;implementation{$R *.dfm}procedure TForm1.Timer1Timer(Sender: TObject);
beginEdit1.Text := FormatDateTime('hh:mm:ss', now);DdeServerItem1.Text := Edit1.Text;
end;procedure TForm1.Button2Click(Sender: TObject);
begintryDdeClientConv1.CloseLink;exceptend;Application.Terminate;
end;procedure TForm1.Button1Click(Sender: TObject);
begintryDdeClientItem1.DdeConv := DdeClientConv1;if (DdeClientConv1.SetLink('Project1','DdeServerConv1') = False) thenbeginShowMessage('Unable to connect DDEserver!');Exit;end;DdeClientItem1.DdeItem := 'DdeServerItem1';DdeClientConv1.OpenLink;exceptend;
end;procedure TForm1.DdeClientItem1Change(Sender: TObject);
beginEdit2.Text := DdeClientItem1.Text;
end;end.

利用上面Delphi的DDE server,写VB6客户端就更简单了。

放个TEXT1,用它DDE相关的属性,用好SERVICE和TOPIC,数据就会从DELPHI程序的SERVER中传送过来。

完整的VB6程序代码如下:

Option ExplicitPrivate Sub Command1_Click()On Error Resume Next' 连接Delphi的DDE服务:服务名=DelphiDDE,主题=DataTopicText1.LinkTopic = "Project1|DdeServerConv1"' 指定数据项(与Delphi的DdeServerItem1.Name一致)Text1.LinkItem = "DdeServerItem1"' 设置连接模式:1=自动更新,2=手动更新Text1.LinkMode = 1 ' 自动接收数据更新Text1.LinkMode = 0 ' Broke connection
End Sub' 断开连接
Private Sub Command2_Click()End
End SubPrivate Sub Timer1_Timer()On Error Resume NextCommand1_Click
End Sub

DDE delphi7 client 和 DDE vb6 client 同时接收 DDE delphi7 server

DDE Delphi7 及 VB6 代码链接

https://download.csdn.net/download/weixin_45707491/92132828

http://www.dtcms.com/a/486269.html

相关文章:

  • 网络安全等级保护要求(10+4 层面)记忆总结
  • 活字格AI智能体:重塑企业级自动化与智能交互新范式
  • 【通信网络安全主题】第六届计算机通信与网络安全国际学术会议(CCNS 2025)
  • 海商网做网站价格自己做的网站怎么添加采集模块
  • vscode使用翻译插件分享
  • Web通信技术:Comet(服务器推送)详解
  • 互联网营销网站建设玩具租赁网站开发与实现论文
  • 为什么格林公式二重积分一侧的被积函数是两项相减
  • 成都网站建设软件石家庄模板网站
  • 【实战-12】flink版本表
  • ‌MyBatis-Plus 的 LambdaQueryWrapper 可以实现 OR 条件查询‌
  • 带你了解STM32:SPI通信(硬件部分)
  • CentOS下安装配置JDK24和tomcat11
  • springboot mybatisplus 配置SQL日志,但是没有日志输出
  • Windows下安装配置JDK24和tomcat11
  • 建个大型网站要多少钱房产信息网网站
  • 贵阳建站公司做的不错的h5高端网站
  • 实践 3:Vim 编辑器的使用
  • UG(NX)转换为3DXML全流程技术指南,附迪威模型网在线方案,适用于技术人员与学生
  • Python爬虫第4课:XPath与lxml高级解析技术
  • 使用 EasyExcel 封装通用 Excel 导出工具类
  • asp.net做网站的流程百度标注平台怎么加入
  • 怎么做同学录的网站电子商务公司简介模板
  • Redis(63)Redis的Lua脚本如何使用?
  • 鸿蒙NEXT输入设备开发指南:从触摸屏到游戏手柄的完整解决方案
  • 鸿蒙Harmony实战开发教学Day2-鸿蒙新项目创建+目录配置!(新手入门指南)
  • Lua中,表、元表、对象、类的解析
  • 在易语言里面做网站做二手物资哪个网站好
  • excel和word文件默认用office打开而不是用wps
  • 万网上传网站企业信用信息查询网官网