路过的高手请帮帮忙,有个问题希望大家能给提供帮助。我现在做的一个开发项目,需要调用vc写的动态链接库,函数调用没问题,但是数据上报的时候出现问题。
情况是这样的,初始化的时候提供给dll一个窗口句柄,用户上报数据时触发窗口消息,在窗口消息的LPARAM参数里写的书一个struct结构的指针,我从这个指针里面取出相应的数据。问题是,我用delphi和vc取出来的数据有一部分不一致,已经考虑到了数据对齐的问题,而且我已经从两个程序里取出了16进制的数据块内容,但是就是不一样,请问到底是什么问题,什么情况会引发这样的问题出现
情况是这样的,初始化的时候提供给dll一个窗口句柄,用户上报数据时触发窗口消息,在窗口消息的LPARAM参数里写的书一个struct结构的指针,我从这个指针里面取出相应的数据。问题是,我用delphi和vc取出来的数据有一部分不一致,已经考虑到了数据对齐的问题,而且我已经从两个程序里取出了16进制的数据块内容,但是就是不一样,请问到底是什么问题,什么情况会引发这样的问题出现
解决方案 »
- shellexecute中执行命令行传入参数的问题
- 求用多线程实现ftp下载的例子
- 一个关于Listbox.items.strings的问题(有关AddItem(String,Object))在线等待
- 当TcpServer1.Close后,怎样再打开端口?
- vb与delphi两大重量级软件的互译----------在线等待
- NMFTP 组件问题
- 哪位老兄帮忙解决,谢谢!很急呀!
- select后的公式计算!请回答过“一个先select查询+sum,我总是不能解决SUM! ”问题的朋友再回答一下并进来领分。
- DELPHI高手看看你们的真正水平!!
- 请问 LoadBitmap(hInstance, 'BACKGROUND') 此函数的BACKGROUND windows资源自代马?
- Tchar中 x轴是日期,该怎么设定??????谢谢高手们救命!
- 【Form执行Showmodal后关闭,变量未清除问题】
TRec = packed record
end;
从CPU的debug上看,数据对齐没有问题,相对位移都是一致的
windindance(风舞轻扬·白首为功名),请问delphi 和vc 的字节高低位顺序是怎么排列的啊?
具体怎样设置偶也忘记了……
type
PTTDATA = record
line1State : byte;
line2State : byte;
line1telephoneNumber : array[0..23] of char;
line2telephoneNumber : array[0..23] of char;
newKey1 : array[0..23] of char;
newKey2 : array[0..23] of char;
line1pttBuffer : array[0..23] of char;
line2pttBuffer : array[0..23] of char;
line1pttDirection : PTTInt;
line2pttDirection : PTTInt;
keyHandset1 : PTTInt;
keyHandset2 : PTTInt;
keyHandfree1 : PTTInt;
keyHandfree2 : PTTInt;
keyPTT1 : PTTInt;
keyPTT2 : PTTInt;
keyCOS1 : PTTInt;
keyCOS2 : PTTInt;
IO : array[0..7] of PTTInt;
line1audio1 : PTTInt;
line1audio2 : PTTInt;
end;
在vc和delphi程序里同样的设备状态可是上传的数据
却不相同。
C++中int类型,不管有无符号,都是两个字节;而delphi的Int是四个字节,LongInt与Int一样,都是四字节。
我定义的PTTint是在delphi里面写的
byte line2State;
char line1telephoneNumber[24];
char line2telephoneNumber[24];
char newKey1[24];
char newKey2[24];
char line1pttBuffer[24];
char line2pttBuffer[24];
long line1pttDirection; //或者int
long line2pttDirection;
long keyHandset1;
long keyHandset2;
long keyHandfree1;
long keyHandfree2;
long keyPTT1;
long keyPTT2;
long keyCOS1;
long keyCOS2;
long IO[8];
long line1audio1;
long line1audio2;老兄如果VC的结构是这样的话,应该就不是结构的问题
还有就是你DELPHI的转换是否正确,
我测试了一下,没有什么问题,我是直接返回的一个结构指针,
其内存是在DLL中分配的堆上的内存
所以,只能用pinteger或pointer作参数,不要用array of longint//抄来的,不知道是不是这样.