第一次在Delphi里面写过程,不知道带数组参数的过程如何写,详细如下:
================================================================
unit Unit9;interfaceuses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;type
  TForm9 = class(TForm)
    ListBox1: TListBox;
    Label1: TLabel;
    Memo1: TMemo;
    Label2: TLabel;
    Label3: TLabel;
    BtnClear: TButton;
    Button1: TButton;
    Button2: TButton;
    procedure InitItems(var arr1: array);//运行的时候这里出错!
    procedure FormCreate(Sender: TObject);
    procedure BtnClearClick(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form9: TForm9;
  MyArray: array[0..25] of Char;implementation{$R *.DFM}procedure InitItmes(var arr1:array);
var
  i,j: Integer;
begin
  for i := 0 to High(arr1) do
  begin
    j := i + 97;
    arr1[i] := Chr(j);
  end;
end;
================================================================运行的时候程序一直弹出Error对话框,提示在出错行有这样的错误: Expected OF but ')' found到底是怎么回事呢?

解决方案 »

  1.   

    type TMyArray = array [0..255] of char;procedure InitItmes(var arr1:TMyArray);
      

  2.   

    unit Unit9;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls;type
      TForm9 = class(TForm)
        ListBox1: TListBox;
        Memo1: TMemo;
        Label2: TLabel;
        Label3: TLabel;
        BtnClear: TButton;
        Button2: TButton;
        Button1: TButton;
        Button3: TButton;
        TMyArray = array [0..255] of Char;//该行出错
        procedure InitItems(var arr1: TMyArray);
        procedure FormCreate(Sender: TObject);
        procedure BtnClearClick(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure Button3Click(Sender: TObject);
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form9: TForm9;
      MyArray: array[0..25] of Char;implementation{$R *.DFM}procedure InitItmes(var arr1:TMyArray);
    var
      i,j: Integer;
    begin
      for i := 0 to High(arr1) do
      begin
        j := i + 97;
        arr1[i] := Chr(j);
      end;
    end;
    procedure TForm9.FormCreate(Sender: TObject);
    var
      i,j: Integer;
    begin
      for i := 0 to High(MyArray) do
      begin
         j := i + 97;  //ASCII 'a' = #97
         MyArray[i] := Chr(j);
         //ListBox1.Items[i] := MyArray[i];
      end;
      ListBox1.MultiSelect := True;
    end;procedure TForm9.BtnClearClick(Sender: TObject);
    begin
       ListBox1.Clear;
    end;procedure TForm9.Button2Click(Sender: TObject);
    var
      i :Integer;
    begin
      self.InitItems(MyArray);
      for i := 0 to High(MyArray) do
        ListBox1.Items.Strings[i] := MyArray[i];
    end;=======================================================
    我修改了程序之后,可是又出现错误了:Expected ':' but '=' found,为什么呢?
      

  3.   

    将你出错的那句procedure InitItems(var arr1: array);//运行的时候这里出错!
    改为:procedure InitItems(var arr:array of char) 即可。如果你要用restboy(枫) ( )的方法,你需要将TMyArray = array [0..255] of Char;写在Type之后(你代码中第9行那个Type)。
      

  4.   

    我使用了restboy(枫) ( )的方法的时候,发现了在后面,会出现类型转换不了的错误。故我按照CareYouOnly(只在乎你)的方法,修改了程序如下
    ================================================================
    unit Unit9;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls;type
      TForm9 = class(TForm)
        ListBox1: TListBox;
        Memo1: TMemo;
        Label2: TLabel;
        Label3: TLabel;
        BtnClear: TButton;
        Button2: TButton;
        Button1: TButton;
        Button3: TButton;
        procedure InitItems(var arr1:array of Char);//Error!
        procedure FormCreate(Sender: TObject);
        procedure BtnClearClick(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure Button3Click(Sender: TObject);
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form9: TForm9;
      MyArray: array[0..25] of Char;implementation{$R *.DFM}procedure InitItmes(var arr1:array of Char);
    var
      i,j: Integer;
    begin
      for i := 0 to High(arr1) do
      begin
        j := i + 97;
        arr1[i] := Chr(j);
      end;
    end;
    procedure TForm9.FormCreate(Sender: TObject);
    var
      i,j: Integer;
    begin
      for i := 0 to High(MyArray) do
      begin
         j := i + 97;  //ASCII 'a' = #97
         MyArray[i] := Chr(j);//如果使用类型TMyArray,则在此会出现类型转换不了
         ListBox1.Items[i] := MyArray[i];
      end;
      ListBox1.MultiSelect := True;
    end;procedure TForm9.BtnClearClick(Sender: TObject);
    begin
       ListBox1.Clear;
    end;procedure TForm9.Button2Click(Sender: TObject);
    var
      i :Integer;
    begin
      self.InitItems(MyArray);
      for i := 0 to High(MyArray) do
        ListBox1.Items.Strings[i] := MyArray[i];
    end;procedure TForm9.Button3Click(Sender: TObject);
    begin
      ListBox1.MultiSelect := True;
    end;procedure TForm9.Button1Click(Sender: TObject);
    begin
      //
    end;end.
    ==============================================================
    为何还会出现这样的错误呢?到底出了什么问题,请高手继续解答
      

  5.   

    动态数组不能用var的方式传进过程作为参数
      

  6.   

    楼上的说得对,改为procedure InitItems(arr:array of char) 即可,我上次发贴的时候直接把你的代码复制过去,忘了把var删除,不好意思,呵呵。