我的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那样发生数据的实时改变!

解决方案 »

  1.   

    你好!
    你设置的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 ;
      

  2.   

    bamboo555(bamboo) 你好:
       我按照上面试验了,可问题还是没有解决。仅将ConnectMOde设为
    ddeAutoMatic,似乎仍然不能实时的改变Memo中的值,必须要再执行此过程。这与VB的DDE大不一样。我看有些网站上是这样介绍:DDE可以有冷连接,热连接(Hot Link),温连接。似乎是热连接才能实时的改变获取的DDE值。可是Delphi中能吗?