我定义了data1:array[1..128] of char
       s:string
要把s的值赋给data1
我用如下语句
for i := 1 to length(s) do
begin
  data1[i-1] := s[i];
end;运行到length后的第一个括号处报错:missing operator or semicolon
是什么原因?
请高手赐教,在线等

解决方案 »

  1.   

    你把ARRAY声明为一个pchar可以吗?
      

  2.   

    data1[i] := s[i];你聲明沒有
    data[0], 所以會出錯
      

  3.   

    你也可修改
    data1:array[0..128] of char;這樣也可以
      

  4.   

    你的这个有一个严重的Bug,因为没有检查字符串的长度,你固定了最大数组长度为1-128,如果字符串超过128个字符,那么程序就会导致数组越界
    应该这样写:
    var
      datal :array of char;  //声明为动态数组
      s :string;
      i :integer;
    begin
      SetLength(datal, Length(s) + 1);
      for i := 1 to Length(s)
        datal[i] := s[i];
    end;
      

  5.   

    begin
      Move(S[1], data1[Low(data1)], Length(S)); //string -> array  SetLength(S, Length(data1));
      Move(data1[Low(data1)], S[1], Length(data1)); //array - >string
    end;
      

  6.   

    如果要定义数组边界为1..128,那么你在后面的
    data1[i-1] := s[i];
    就是错的,试想i=1时会发生什么?
      

  7.   

    因为你声明的s为string是不定长的
    所以,你声明的数组应该是动态的
    然后再分配
      

  8.   

    你的这个有一个严重的Bug,因为没有检查字符串的长度,你固定了最大数组长度为1-128,如果字符串超过128个字符,那么程序就会导致数组越界
    应该这样写:
    var
      datal :array of char;  //声明为动态数组
      s :string;
      i :integer;
    begin
      SetLength(datal, Length(s) + 1);
      for i := 1 to Length(s)
        datal[i] := s[i];
    end;