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 当执行时为什么第一次会出现一个空白的对话框呢??     空白的对话框是怎么来的呢?   ?_?    望高人指教.

解决方案 »

  1.   

    把i的初值设为1,还有这个问题吗?应该没有。
    当i=0时,ts[i]的地址是不定的,所以出现了一个空白的对话框。
      

  2.   

    showmessage(#0);ts[0] := #0而Delphi中#0是字符串结束的标志,所有为空白的对话框i改为1即可
      

  3.   

    我知道i为1时正常.
    可是我想知道为什么会出现那个对话框?只有两个showmessage不管ts[i]是什么值.后面的'is chinese' or ' is english'也该会显示出来啊?  可是为什么不会呢?
      

  4.   

    明白了.多谢 crossbow.    结贴
      

  5.   

    #0是字符串结束的标识啊,系统就不处#0后边的dongdong了
      

  6.   

    任何Str[0] 都为#0, ShowMessage(#0)肯定为空!!!
    String类型在内存中的确切格式如下:
    (4字节)分配大小+(4字节)引用计数+(4字节)字串长度+(不定长)字符数组+(1字节)$0结束字符