代码如下,我使用动态数组编译不让通过,但是静态数组就可以,请问如果是动态数组具体应该怎么写?
type
  TArrayChar=array of char;var
  buffer:TArrayChar;begin
  setlength(buffer,2);
  buffer[0]:='q';
  buffer[1]:='w';
  Writeln(buffer);
  Readln;
end.

解决方案 »

  1.   

    可以自己包装一个,例如:procedure WriteArrayln(const Arys: array of Integer);
    var
      i: Integer;
    begin
      for i := Low(Arys) to High(Arys) do
        Write(Arys[i], ' ');
      Writeln;
    end;var
      A: array of Integer;
    begin
      SetLength(A, 3);
      A[0] := 10;
      A[1] := 20;
      A[2] := 30;
      WriteArrayln(A);
      Readln;
    end.
    WriteArrayln可以多写几个重载起来,这样就和writeln差不多了。
      

  2.   

    我想writeln应该支持动态数组的,因为writeln可以使用string类型做参数,而string就是动态数组。
      

  3.   

    String和动态数组是不同的概念,之所以可以支持String,是因为System单元里面有重载这个函数对于其他类型,你必须自己去实现才行。
      

  4.   

    如果象楼主那样,使用字符数组,那可以这样:type
      TArrayChar=array of char;var
      buffer:TArrayChar;begin
      setlength(buffer,2);
      buffer[0]:='q';
      buffer[1]:='w';
      Writeln(StrPas(@buffer[0]));  Readln;
    end.
      

  5.   

    Writeln(string(buffer));这样也是可以的另外,最好能把字符数组最末一个元素赋值为#0