一个长度为10个字符的字符串(或字符数组),若中间有字符CHR(0),就不能用PCHAR来存储吗? 如题。我是在做一个DLL,其中一个函数的输入参数是一个10个字符的字符串,但其中可能包含CHR(0),不知能不能用PCHAR,若不能,有没有更好的办法。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 没关系,增加一个长度标识,只不过你不能再将他用在字符串函数中了,因为这些函数会截断字符串,但是你可以取出给定长度中的全部字符,就看你怎么用。PWideChar的话对于有两个连续0也一样是不行的。 showmessage('Hello'+char(0)+'Word');看看结果是什么?但是长度依然为10 需要多了解一下指针的概念。可以使用,但是你如果强制转换string(p)的时候,会截掉0后面的字符,但是做参数传递没问题的。指针只是把字符串的首地址传递进函数,无论有没有0,地址后面的内容仍然能够得到的。p+i你能够得到p后面i位置后的字符串。p[i]你能够得到p后面第i个位置的字符。 同意楼上的说法:指针只是把字符串的首地址传递进函数 str := 'Hello'+char(0)+'Word'; p := pchar(str); showmessage(p[9]); ////结果d p:=pChar('Hello'+char(0)+'Word');string(('Hello'+char(0)+'Word')):结果是Hellostring(p):结果是Hellostring(p+1):结果是ellostring(p+6):结果是Wordp[1]:Hp[6]:w这样解释应该清楚了。 Dev Express 里面有没有这个数据感知组件? 请问写进销存软件、财务软件或ERP,除了编程技术之外,还应该补充哪些业务知识? Delphi下的轻量级IoC容器 - Elite Container (Demo 0.1版) 动态参数的问题 delphi 在cad中画圆并填充颜色 DBEdit 显示数据库数值型字段问题,怎样处理使数字居左显示? 有关数据库的小问题.. 如何制作bde的安装? 急!!!!!别的单元怎样访问项目文件中的自定义过程或函数? 看到标题的请进 爽爽一问:关于数据查询 招聘师傅:QQ教dbgrid使用。 午间1小时,150分。
看看结果是什么?但是长度依然为10
可以使用,但是你如果强制转换string(p)的时候,会截掉0后面的字符,但是做参数传递没问题的。指针只是把字符串的首地址传递进函数,无论有没有0,地址后面的内容仍然能够得到的。p+i你能够得到p后面i位置后的字符串。p[i]你能够得到p后面第i个位置的字符。
str := 'Hello'+char(0)+'Word';
p := pchar(str);
showmessage(p[9]); ////结果d
string(('Hello'+char(0)+'Word')):结果是Hello
string(p):结果是Hello
string(p+1):结果是ello
string(p+6):结果是Word
p[1]:H
p[6]:w
这样解释应该清楚了。