废话不多说了,直接上例子解说:
procedure TForm1.Button1Click(Sender: TObject);
var
aa: array[0..1]of AnsiChar;
bb1: string;
begin
aa[0] := AnsiChar('1');
aa[1] := AnsiChar('2');
bb1 := StrPas(aa);
ShowMessage(bb1); //这里显示不正确
end;
procedure TForm1.Button1Click(Sender: TObject);
var
aa: array[0..2]of AnsiChar;
bb1: string;
begin
aa[0] := AnsiChar('1');
aa[1] := AnsiChar('2');
bb1 := StrPas(aa);
ShowMessage(bb1); //这就正确了
end;
为什么呢?? 没时间深入研究了,估计是StrPas的Bug。
不是bug吧 这个字符串要有结束符吧
不然你写个StrPas看看,没有结束符,咋判断字符串长度?!
类似Obj-C:
char xx[2];
xx[0] = '0';
xx[1] = '1';
[NSString stringWithUTF8String:xx];
这样你是获得不到正确结果的,要下面这样
char xx[3];
xx[0] = '0';
xx[1] = '1';
xx[2] = ' ';
[NSString stringWithUTF8String:xx];
http://www.cnblogs.com/AnyDelphi/archive/2011/10/15/2212755.html