这个什么意思啊?

解决方案 »

  1.   

    数组越界了
    最大index最好在长度后面减1;字符串型下标以1开始
    比如说
    var s:string;
    s:='1234';
    showmessage(s[0]);//D7下会出错但是其他数组,比如说Components,则是Components[0]开始到Components(ComponentCount-1)
      

  2.   

    function Tlogin.carryqx(str:string):integer;
    begin
      if copy(str,0,1)='1' then
      main.MainMenu1.Items.Items[0].Items[0].Enabled:=false else
      main.MainMenu1.Items.Items[0].Items[0].Enabled:=false;
      if copy(str,1,1)='1' then
      main.MainMenu1.Items.Items[0].Items[1].Enabled:=true else
      main.MainMenu1.Items.Items[0].Items[1].Enabled:=false;
      if copy(str,2,1)='1' then
      main.MainMenu1.Items.Items[0].Items[2].Enabled:=false else
      main.MainMenu1.Items.Items[0].Items[2].Enabled:=false;
      if copy(str,3,1)='1' then
      main.MainMenu1.Items.Items[0].Items[3].Enabled:=true else
      main.MainMenu1.Items.Items[0].Items[3].Enabled:=false;
      if copy(str,4,1)='1' then
      main.MainMenu1.Items.Items[0].Items[5].Enabled:=true else
      main.MainMenu1.Items.Items[0].Items[5].Enabled:=false;
      if copy(str,5,1)='1' then
      main.MainMenu1.Items.Items[1].Items[1].Enabled:=true else
      main.MainMenu1.Items.Items[1].Items[1].Enabled:=false;
      if copy(str,6,1)='1' then
      main.MainMenu1.Items.Items[1].Items[2].Enabled:=true else
      main.MainMenu1.Items.Items[1].Items[2].Enabled:=false;
      if copy(str,7,1)='1' then
      main.MainMenu1.Items.Items[1].Items[4].Enabled:=true else
      main.MainMenu1.Items.Items[1].Items[4].Enabled:=false;
      {if copy(str,8,1)='1' then
      main.MainMenu1.Items.Items[1].Items[5].Enabled:=true else
      main.MainMenu1.Items.Items[1].Items[5].Enabled:=false;
      if copy(str,9,1)='1' then
      begin
      main.MainMenu1.Items.Items[2].Items[1].Enabled:=true;
      main.MainMenu1.Items.Items[2].Items[2].Enabled:=true;
      end
      else
      begin
      main.MainMenu1.Items.Items[2].Items[1].Enabled:=false;
      main.MainMenu1.Items.Items[2].Items[2].Enabled:=false;
      end;
      if copy(str,10,1)='1' then
      main.MainMenu1.Items.Items[3].Items[1].Enabled:=true else
      main.MainMenu1.Items.Items[3].Items[1].Enabled:=false;
      if copy(str,11,1)='1' then
      main.MainMenu1.Items.Items[3].Items[2].Enabled:=true else
      main.MainMenu1.Items.Items[3].Items[2].Enabled:=false;
      if copy(str,12,1)='1' then
      main.MainMenu1.Items.Items[3].Items[3].Enabled:=true else
      main.MainMenu1.Items.Items[3].Items[3].Enabled:=false;
      if copy(str,13,1)='1' then
      main.MainMenu1.Items.Items[3].Items[4].Enabled:=true else
      main.MainMenu1.Items.Items[3].Items[4].Enabled:=false;
      if copy(str,14,1)='1' then
      main.MainMenu1.Items.Items[3].Items[6].Enabled:=true else
      main.MainMenu1.Items.Items[3].Items[6].Enabled:=false;
      if copy(str,15,1)='1' then
      main.MainMenu1.Items.Items[3].Items[7].Enabled:=true else
      main.MainMenu1.Items.Items[3].Items[7].Enabled:=false;
      if copy(str,16,1)='1' then
      main.MainMenu1.Items.Items[4].Items[1].Enabled:=true else
      main.MainMenu1.Items.Items[4].Items[1].Enabled:=false;
      if copy(str,17,1)='1' then
      main.MainMenu1.Items.Items[4].Items[2].Enabled:=true else
      main.MainMenu1.Items.Items[4].Items[2].Enabled:=false; }end;这是一个权限控制函数,不知道怎么回事,传来的参数有有18位啊
      

  3.   

    字符串引用从s[1]开始,没有s[0]的
    procedure TForm1.Button3Click(Sender: TObject);
    var
     s:string;
    begin
     s:='abcd';
     showmessage(s[1]);
    end;
    数组的引用通过定义的下标来的
    procedure TForm1.Button3Click(Sender: TObject);
    var
      arr:array[1..8] of char;  //可以用arr[1]到arr[8]但不能用arr[0]因为下标为1到8
    //若换为arr:array[0..7] of char; 可以用arr[0]到arr[7]因为下标为1到8