我的Delphi的DDE设置:
第一种:DdeClientConv1。ConnectMOde 为ddeManual
DdeClientConv1.SetLink ('VServer','tagname');
DdeClientConv1.OpenLink ;
pszInfo :=DdeClientConv1.RequestData ('k' );
Memo1.SetTextBuf (pszInfo);
DdeClientConv1.CloseLink ;
DdeClientItem1.DdeItem := 'k';
第二种:DdeClientConv1。ConnectMOde 为ddeAutoMatic
DdeClientConv1.DdeService 设为VServer
DdeClientConv1.DdeTopic 设为tagname结果我发现我用vb做的DDE程序在DDE服务器数据发生改变时,客户端也能改变,而我用Delphi做的DDE程序必须要手工再采集一次DDE服务器的数据,才行,真心求教:为什么Delphi的DDE不能想VB的DDE那样发生数据的实时改变!
第一种:DdeClientConv1。ConnectMOde 为ddeManual
DdeClientConv1.SetLink ('VServer','tagname');
DdeClientConv1.OpenLink ;
pszInfo :=DdeClientConv1.RequestData ('k' );
Memo1.SetTextBuf (pszInfo);
DdeClientConv1.CloseLink ;
DdeClientItem1.DdeItem := 'k';
第二种:DdeClientConv1。ConnectMOde 为ddeAutoMatic
DdeClientConv1.DdeService 设为VServer
DdeClientConv1.DdeTopic 设为tagname结果我发现我用vb做的DDE程序在DDE服务器数据发生改变时,客户端也能改变,而我用Delphi做的DDE程序必须要手工再采集一次DDE服务器的数据,才行,真心求教:为什么Delphi的DDE不能想VB的DDE那样发生数据的实时改变!
你设置的DDE两种方式的参数设置相反。应该为:
第一种:是自动方式。
DdeClientConv1.ConnectMOde:=ddeAutoMatic;
DdeClientConv1.SetLink ('VServer','tagname');
DdeClientConv1.OpenLink ;
DdeClientItem1.DdeConv := DdeClientConv1;
DdeClientItem1.DdeItem := 'k';
pszInfo := DdeClientItem1.Text;
Memo1.SetTextBuf (pszInfo);
DdeClientConv1.CloseLink ;
第二种:为手工方式。
DdeClientConv1.ConnectMOde:=ddeManual;
DdeClientConv1.DdeService 设为VServer
DdeClientConv1.DdeTopic 设为tagname
DdeClientConv1.OpenLink ;
pszInfo :=DdeClientConv1.RequestData ('k' );
Memo1.SetTextBuf (pszInfo);
DdeClientConv1.CloseLink ;
我按照上面试验了,可问题还是没有解决。仅将ConnectMOde设为
ddeAutoMatic,似乎仍然不能实时的改变Memo中的值,必须要再执行此过程。这与VB的DDE大不一样。我看有些网站上是这样介绍:DDE可以有冷连接,热连接(Hot Link),温连接。似乎是热连接才能实时的改变获取的DDE值。可是Delphi中能吗?