C中的Char型对应该用哪种呢???(0分)

  • 主题发起人 主题发起人 anndy1999
  • 开始时间 开始时间
A

anndy1999

Unregistered / Unconfirmed
GUEST, unregistred user!
在DELPHI中接收来自C的结构体数据包,C中结构体为:
struct test:
{
int code;
char name[10];
}
delphi中的结构体:
dtest=record
code : integer;
name : 该用什么呢???????
end;

我试着用array [0..10] of char,string[10],array [0..10] of ansichar都不能获取到数据。同样的方法,我可以获取到code的内容,但为何就获取不到name的内容,我用memo来装填name的内容,可以看见,有内容不断的添加进来(根据滚动条知道的),但就是memo中什么也没有。
偶没有分,不知道大家能否帮偶呢???
 
string不行,用了string,我连code的内容都收不到了。
 
dtest=record
code : integer;
name : array[0..9] of char;
end;
如果这样还无效,看一下C是否设置了对齐选项
dtest=packed record
code : integer;
name : array[0..9] of char;
end;
如果还不行,
 
试了大家以上提供的方法,结查还是不行。 我还用array [0..9] of byte也试过,结果显示的全是0。真是搞不懂了。还用name : PChar试过,也不行。
大家还有别的办法吗?
 
dtest=record
code : integer;
name : 该用什么呢???????
end;
Code使用word类型,我可以保证char name[10]和string[10],array[0..10] of char一样。
其他的调节代码。
 
array[0..9] of byte
 
你先确定是否真的传进来再说吧.
其实不管是array[0..9] of char;array[0..9] of byte .....类型都不重要的.关键在于占用的字节数而已.如果真的有传进来,只要name[0]会有内容吧???或许你其它地方弄错了.不介意把代码全部贴上来看看.
 
详细代码可见:
http://www.delphibbs.com/delphibbs/dispq.asp?lid=3466007
 
delphi中的结构体:
dtest=record
code : integer;
name : array[0..9] of byte; //该用什么呢???????
end;
 
用array[0..9] of byte时,我用dtest.name[0]显示时,显示为0。也用chr(dtest.name[0])来显示过。也不对。 显示dtest.name[1]、dtest.name[2]这些都是0,看来没有收到数据。还是不行的。
 
c里面的char型数组和Delphi的char型数组在内存结构上是不一样的:
c里面的数组是一个指针,而delphi里面的数组则不是。不信可以在delphi里比较一下@array和@array[low(array)],两者是相等的。

所以要接收这个数组,要用pchar,pchar就是char的指针。
给分!
 
麻烦高手们说清楚点,小弟有点笨。怎样用PChar来接收呢?
前面定义name:PChar;
后面接收用dtest.name就行了??
 
to hbwin2001
我都说了用pchar,要解释也应该我来解释,要分也应该给我的
解释一下
传递任何数组,不管是什么语言(c/delphi/java)只能用指针或者说数组第一元素的地址,而deiphi的pchar 就是char的指针,也是deiphi专门用来和c相兼容的,很多书都介绍了
难道你没看到过吗?
 
平时没注意过,以前也没用到过,jiang_yun_2005老兄,能给点代码提示吗??
先谢谢了!
 
很多地方都要用到的啊,比如你写个DLL给人家调用,凡是用到字符串的都必须用pchar吧,再比如串口来的数据都是pchar 的呀,
你把代码贴出来看看吧
还有jiang_yun_2005是MM :)
 
to jiang_yun_2005
//不管是什么语言(c/delphi/java)只能用指针或者说数组第一元素的地址
你的这话也不对啊,至少delphi的静态数组就不是指针啊,动态数组才是指针。嘿嘿

楼主的情况用pchar应该先申请一块内存把,用getmem(pchar,10);
 
后退
顶部