我在学习Delphi时发现了这样一个问题,有哪位大侠知道为何这样?
是我的程序有毛病还是Delphi开发软件的毛病?
程序如下:
{其中只设置了Button1的Default的属性为True}
procedure TForm1.Button1Click(Sender: TObject);
var
    S :String[25];      {字符操作,S的最大长度为25}
begin
    Button1.Caption := IntToStr(Ord(S[0]));
    {length(S),Ord(S[0]),我要求字符串的长度是多少?}
end;
以上程序在运行时期,出现了多个不同的结果:
1).在单击Button1时显示213,而不是字符的长度;
2).在单击回车时,有的时候显示为0,有的时候显示为19或其它的值,谁知道为什么?
软件运行环境:Win2K Professional ,Delphi 7.0

解决方案 »

  1.   

    搭车问一下:
    procedure TLogoFrm.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      Action:=Cafree;
    end;
    这是什么用处?
      

  2.   

    你倒是会搭车
    窗口关闭自动释放,   它自己会Destroy
      

  3.   

    问题在于delphi并不初始化你的数组,换句话说,如果你的程序改成这样:
    procedure TForm1.Button1Click(Sender: TObject);
    var
        S :String[25];      {字符操作,S的最大长度为25}
    begin
        Button1.Caption := IntToStr(Ord(S[0]))+':'+IntToStr(length(S));
        {length(S),Ord(S[0]),我要求字符串的长度是多少?}
    end;
    那么Button1上显示的将是213:213,或0:0等等,如果想得到正确的值,初始化一下吧,这样:procedure TForm1.Button1Click(Sender: TObject);
    var
        S :String[25];      {字符操作,S的最大长度为25}
    begin
        S:='AAA';
        Button1.Caption := IntToStr(Ord(S[0]))+':'+IntToStr(length(S));
        {length(S),Ord(S[0]),我要求字符串的长度是多少?}
    end;
    那么你的结果肯定是3:3,错了我请客,嘻嘻
      

  4.   

    to myling(阿德) 
     也许你看起来很基础吧,呵呵,何必这么较真呢
      

  5.   

    这个问题好像在《DELPHI应用开发手册》里讨论过,从DELPHI5后就不提倡用S[0]的方式来判断string的长度了