<font color=green>脑袋大了 -》服务程序死活不肯把数据传给客户程序</font>(20分)

  • 主题发起人 主题发起人 cat.yy
  • 开始时间 开始时间
C

cat.yy

Unregistered / Unconfirmed
GUEST, unregistred user!
我做了一个DDE对话的联系,打开客户程序时 服务程序也打开了,但服务程序死活不肯
把数据传给客户程序。

客户/服务 程序中都加上了“会话部件”和“项目部件”,都采用默认名称

服务器的设置如下:
程序名 server.exe
DDEServerItem1。DdeConv := DDEServerConv;
服务器窗体只有一个EDIT1,
procedure TServerForm.Edit1Change(Sender: TObject);
begin
DDEServerItem1.Text := Edit1.Text;
end;

客户机的设置如下:
DDEClientItem1.DdeConv := DDEClientConv;
DDEClientConv1.ConnectMode := DDEManual;
客户机窗体只有一个EDIT1,
procedure TClientForm.DdeClientItem1Change(Sender: TObject);
begin
Edit1.Text := DDEClientItem1.Text;
end;
//
procedure TClientForm.FormCreate(Sender: TObject);
begin
if DDEClientConv1.SetLink('Server','DDEServerConv1') then
begin
DDEClientItem1.DdeItem := 'DDEServerItem1';
if DDEClientConv1.ConnectMode=DDEManual then
DDEClientConv1.OpenLink;
end;
end;

怎么搞??
 
我照书上抄的例子,但没有实现数据传递,我想知道错哪儿了

有没可能是delphi5的问题?
 
别学DDE不就完了,直接跳到OLE,
我反正没学DDE.
 
我也觉得她不好,但书上都有这节 想学学,
如果大家都认为DDE烂 我就学OLE吧
不过 俺想知道哪儿出问题了
 
是不是要client端requestdata一下?
 
我现在也需要用到dde,后来你这个程序试不来了吗?我用你的例子试了一下,我的sever窗体
怎么没出现?你在做的时候,是不是把sever端和客户端在两个窗体中实现的?你把应用程序
存成*.exe,可行吗?希望能就dde的问题跟你继续讨论。
 
singforyou:

?服务程序/客户程序 的EXE要在同一目录下
(也许你已经知道了,得到答案别忘了告诉我!)
 
我现在也为DDE的事情着急,我做了一些测试,发现手工建立了DDE连接后,在2000下可以
正常,但在98下却不好使。在98下面当Service的数据发生变化时能够调用DdeMan单元里
的DdeMgrBackCall进行处理,但是不知道为什么当运行到DdeMgrBackCall里的
DdeQueryConvInfo(Conv, xID, @ci)总是返回0,也就是无法取得并保存正确的数据在ci中
不知道别人有没有好的方法。
 
求知平台 欢迎参与
 
我以前也是这样。后来一气之下就不用DDE了。:)
 
在Win2000下编程可以解决一切问题。另外在自动连接的情况下改变Conv的Item后要
SetLink一下,在手工连接的情况下要OpenLink一下。
如果你是动态创建的DdeClientConv和DdeClientItem,而且要在win9x下运行,那你
的麻烦就大了,呵呵。
 
DDE问题多,这种方式好象现在的程序中很少见到
 
附加功能 将问题提前
 
请继续或结束
 
两个程序同时在explore下执行,有可能是由于delphi或windows的Bug造成的
 
实时数据动态交换、跟工业组态交互,DDE是避不开的。
——不知道小猫在北京可好
 
也许是编辑器的问题,没解密好
我的MediaPlayer也不能用,但C++Builder下通过了
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部