i:=0;
ts:='中国 Super Man!';while i<=length(ts) do
begin
if ord(ts[i])>128 then
begin
showmessage(ts[i]+ts[i+1]+' is chinese');
inc(i,2);
end
else
begin
showmessage(ts[i]+' is english');
inc(i);
end;
end;这是一小段判断汉字的代码,因为失误把i初值符为0 当执行时为什么第一次会出现一个空白的对话框呢?? 空白的对话框是怎么来的呢? ?_? 望高人指教.
ts:='中国 Super Man!';while i<=length(ts) do
begin
if ord(ts[i])>128 then
begin
showmessage(ts[i]+ts[i+1]+' is chinese');
inc(i,2);
end
else
begin
showmessage(ts[i]+' is english');
inc(i);
end;
end;这是一小段判断汉字的代码,因为失误把i初值符为0 当执行时为什么第一次会出现一个空白的对话框呢?? 空白的对话框是怎么来的呢? ?_? 望高人指教.
当i=0时,ts[i]的地址是不定的,所以出现了一个空白的对话框。
可是我想知道为什么会出现那个对话框?只有两个showmessage不管ts[i]是什么值.后面的'is chinese' or ' is english'也该会显示出来啊? 可是为什么不会呢?
String类型在内存中的确切格式如下:
(4字节)分配大小+(4字节)引用计数+(4字节)字串长度+(不定长)字符数组+(1字节)$0结束字符