很奇怪的问题,请高手帮忙!!!

zhangjl716 2003-09-12 12:15:37
我用VC做了一个简单的EXE形式的服务器组件,组件接口提供方法为
GetData([in,out]MYSTRUCT *pMyDataIn_Out);

数据结构类型为:
typedef struct tagMYSTRUCT{
unsigned char v1;
float v2;
double v3;
}MYSTRUCT


我在服务器组件中只修改了结构pMyDataIn_Out数据成员的值。


问题:(1)当用Delphi程序做客户程序,调用该组件的方法,返回的参数不正确。比如本来我需要返回的v3= 1.1,但程序可能读出的数据为-12344E-304这样的数据。
(2)我原来做过这样的程序,在WIN2000平台上,使用Delphi6和VC6,开发的程序没有问题。而我现在的平台是WINXP,请高手指点是否因为平台和开发环境的问题?怎么解决??

另外:如果我的输入输出数据结构定义成:
typedef struct tagMYSTRUCT{
unsigned char v1;
unsigned char v2;
unsigned char v3;
}MYSTRUCT

typedef struct tagMYSTRUCT{
double v1;
double v2;
double v3;
}MYSTRUCT时(即结构里的数据元素同种类型),程序调用返回的结果都没问题!!!!


那为兄弟请帮忙解决一下,将不胜感激!!!

...全文
38 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangjl716 2003-09-15
  • 打赏
  • 举报
回复
问题已经解决,谢谢zjqyb!!!
zhangjl716 2003-09-13
  • 打赏
  • 举报
回复
谢谢各位,问题还没最终解决:

昨天在我的IDL文件前加了#pragma pack(1),可以把in属性的参数问题解决了,但out属性的参数返回的值还是不对(同样必须要求结构内数据元素类型相同才行)

zjqyb 2003-09-13
  • 打赏
  • 举报
回复
按理应该没有问题,把你具体定义的贴出来
FSU 2003-09-13
  • 打赏
  • 举报
回复
学ing!
zjqyb 2003-09-12
  • 打赏
  • 举报
回复
在delphi中用
packed申明record

在vc中用#pragma pack(1)
hongqi162 2003-09-12
  • 打赏
  • 举报
回复
学习!
tanqth 2003-09-12
  • 打赏
  • 举报
回复
UP,VC的没做过

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧