怎么将char数组的内存首地址保存到smallint型变量中 这问题已困扰小弟很久了,哪位大哥赐教一下 ! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Smallint -32768..32767 signed 16-bit放的下吗? 地址是4个字节,Smallint是两个字节,怎么放? 但是我现在的接口函数接受的参数类型就是smallint型的,该怎么转呢? smallint?确定是32位的接口?C++的?最好有原型. 对,是C++开发的接口,C++原型:bOperMethod(long lType, short FAR* pData)在Delphi下原型:bOperMetho(lType:integer;pData:smallint) 在Delphi下原型:bOperMetho(lType:integer;var pData:smallint) short FAR* pData的意思是: pData是一个指向short类型的指针对应Delphi的应该是: bOperMetho(lType:integer; pData:PSmallint); 楼上的Delphi下的原型是加载OCX控件时自动转换过来的,我改不了,我想这个转换不应该会错吧? 如果是写成 bOperMetho(lType:integer; var pData:smallint);那么在调用bOperMetho时, 对应pData的应该是一个SmallInt变量。例如:var AData : array[0..1023] of Smallint; BData : Smallint;begin ...... bOperMetho(..., AData[0]); bOperMetho(..., BData);end;应该都和Char数组的内存首地址无关。 贴出C++调用该函数的代码:char JidTp[800]; strcpy(JidTp,strTemp); bOperMetho(0, (short*)JidTp); to jadeluo 我需要象类似以C++一样将一字符串传进去,如果照你所说,那我该怎么传呢? procedure bOperMetho(lType:integer; var pData:smallint); ......var JidTp : array[0..799] of Byte;begin ...... bOperMetho(0, PSmallInt(@JidTp[0])^); ......end; 这样也行:var JidTp : array[0..799] of Char;begin bOperMetho(0, PSmallint(@JidTp[0])^);end; 原来这个意思呀,x:array[0..199] of char;beginbOperMetho( 0 ,(Psmallint(@x))^ );//早说呢,这样调用end; 好的,我先试试,很感谢大家,我用Delphi不久,感觉很陌生 coreide140.bpl是干嘛用的?老是引发内存访问错误!delphi2010的巨bug? 谁有delphi5.0的安装程序啊??!?!?!!!!! 有关SPCOMM控件的使用 报错‘control has no parent window’是什么原因? Indy10的帮助文件 一个连接数据库的奇怪问题!!! 谁能解释一下有关CPU ID的信息?! 怎么实现打印预览功能? delphi dll封装dm数据模块 紧急求救!!!Help me!! 无法删除、编辑已经发过的帖子!! 怎么将char数组的内存首地址保存到smallint型变量中
在Delphi下原型:bOperMetho(lType:integer;pData:smallint)
var
AData : array[0..1023] of Smallint;
BData : Smallint;
begin
......
bOperMetho(..., AData[0]);
bOperMetho(..., BData);
end;应该都和Char数组的内存首地址无关。
char JidTp[800];
strcpy(JidTp,strTemp);
bOperMetho(0, (short*)JidTp);
我需要象类似以C++一样将一字符串传进去,如果照你所说,那我该怎么传呢?
procedure bOperMetho(lType:integer; var pData:smallint); ......var
JidTp : array[0..799] of Byte;
begin
......
bOperMetho(0, PSmallInt(@JidTp[0])^);
......
end;
JidTp : array[0..799] of Char;
begin
bOperMetho(0, PSmallint(@JidTp[0])^);
end;
beginbOperMetho( 0 ,(Psmallint(@x))^ );//早说呢,这样调用
end;