如题。我是在做一个DLL,其中一个函数的输入参数是一个10个字符的字符串,但其中可能包含CHR(0),不知能不能用PCHAR,若不能,有没有更好的办法。

解决方案 »

  1.   

    没关系,增加一个长度标识,只不过你不能再将他用在字符串函数中了,因为这些函数会截断字符串,但是你可以取出给定长度中的全部字符,就看你怎么用。PWideChar的话对于有两个连续0也一样是不行的。
      

  2.   

    showmessage('Hello'+char(0)+'Word');
    看看结果是什么?但是长度依然为10
      

  3.   

    需要多了解一下指针的概念。
    可以使用,但是你如果强制转换string(p)的时候,会截掉0后面的字符,但是做参数传递没问题的。指针只是把字符串的首地址传递进函数,无论有没有0,地址后面的内容仍然能够得到的。p+i你能够得到p后面i位置后的字符串。p[i]你能够得到p后面第i个位置的字符。
      

  4.   

    同意楼上的说法:指针只是把字符串的首地址传递进函数
     str := 'Hello'+char(0)+'Word';
     p :=   pchar(str);
     showmessage(p[9]);  ////结果d
      

  5.   

    p:=pChar('Hello'+char(0)+'Word');
    string(('Hello'+char(0)+'Word')):结果是Hello
    string(p):结果是Hello
    string(p+1):结果是ello
    string(p+6):结果是Word
    p[1]:H
    p[6]:w
    这样解释应该清楚了。