function Sum (const A: array of Integer): Integer;
var
  I: Integer;
begin
  Result := 0;
  for I := Low(A) to High(A) do
    Result := Result + A[I];
end
少个‘;’

解决方案 »

  1.   

    谢谢这位兄弟 指点,但是加上;还是不可以运行。机器告诉说Identifier redeclared: 'Sum'。请问如何解决
      

  2.   

    low[] 和 high[]是个函数吗?有值 吗?如果不是,就是没有初值
      

  3.   

    是不是与delphi的保留字符delphi相冲突了?函数改个名字试试!
      

  4.   

    你可以尝试这样写
    interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        Button2: TButton;
        Button3: TButton;
        Button5: TButton;
        Button4: TButton;
        procedure Button4Click(Sender: TObject);
      private
        { Private declarations }
         function Sum (const A: array of Integer): Integer;
      
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.DFM}
    function TForm1.Sum (const A: array of Integer): Integer;
    var
      I: Integer;
    begin
      Result := 0;
      for I := Low(A) to High(A) do
        Result := Result + A[I];
    end
    procedure TForm1.Button4Click(Sender: TObject);
    var
      List: array [1..10] of Integer;
      X, I: Integer;
    begin
     
      // initialize the array
      for I := Low (List) to High (List) do
        List [I] := I * 2;
      // call
      X := Sum (Slice (List, 5));
      ShowMessage (IntToStr (X));
    end;end.
    注意是吧Sum作为TForm的私有方法来处理,我看到你使用了Sum函数,但是好像没有申明。
      

  5.   

    你可以尝试这样写
    interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        Button2: TButton;
        Button3: TButton;
        Button5: TButton;
        Button4: TButton;
        procedure Button4Click(Sender: TObject);
      private
        { Private declarations }
         function Sum (const A: array of Integer): Integer;
      
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.DFM}
    function TForm1.Sum (const A: array of Integer): Integer;
    var
      I: Integer;
    begin
      Result := 0;
      for I := Low(A) to High(A) do
        Result := Result + A[I];
    end
    procedure TForm1.Button4Click(Sender: TObject);
    var
      List: array [1..10] of Integer;
      X, I: Integer;
    begin
     
      // initialize the array
      for I := Low (List) to High (List) do
        List [I] := I * 2;
      // call
      X := Sum (Slice (List, 5));
      ShowMessage (IntToStr (X));
    end;end.
    注意是吧Sum作为TForm的私有方法来处理,我看到你使用了Sum函数,但是好像没有申明。
      

  6.   

    谢谢debussy的指教,问题已经解决了,但是我想知道为什么有的函数直接付在implementation后面就可以了比如我以前用的这个
    type
      TForm1 = class(TForm)
        Button1: TButton;
        Button2: TButton;
        Edit1: TEdit;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    var
      Form1: TForm1;
    implementation
    $R *.dfm}
    procedure Hello;
    begin
      ShowMessage ('Hello world!');
    end;
    function Double2 (Value: Integer) : Integer;
    begin
      Result := Value * 2;
    end;
    procedure TForm1.Button1Click(Sender: TObject);
    begin
     Hello;
    end;
    procedure TForm1.Button2Click(Sender: TObject);
    var
      X, Y: Integer;
    begin
      X := Double2 (StrToInt(Edit1.Text));
      Y := Double2 (X);
      ShowMessage (IntToStr (Y));
    end;
    end.
    而在刚才的问题中就不可以,必须要声明呢?
    另:
    谢谢你推荐的那本书,还有其他适合我这种新手的书吗?
      

  7.   

    那一定就是Sum函数和系统同名函数冲突了