unit Unit4;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var
  List1: array[0..3] of Double;
  List2: array[5..17] of Double;
  X: Word;
  S, TempStr: string;
begin
  for X := Low(List1) to High(List1) do
      List1[X] := X * 3.4;
  for X := Low(List2) to High(List2) do
      List2[X] := X * 0.0123;
  Str(Sum(List1):4:2, S);
  S := 'Sum of List1: ' + S + #13#10;
  S := S + 'Sum of List2: ';
  Str(Sum(List2):4:2, TempStr);  S := S + TempStr;
  MessageDlg(s,mtcustom, [mbOk], 0);
end;function Sum( var X: array of Double): Double;var
  I: Word;
  S: Real;
begin
  S := 0; { Note that open array index range is always zero-based. }
  for I := 0 to High(X) do S := S + X[I];
  Result := S;
end;
end.错误提示:[Error] Unit4.pas(37): Undeclared identifier: 'Sum'

解决方案 »

  1.   

    把SUM函数定义放在前面function Sum( var X: array of Double): Double;
    var
      I: Word;
      S: Real;
    begin
      S := 0; { Note that open array index range is always zero-based. }
      for I := 0 to High(X) do S := S + X[I];
      Result := S;
    end;procedure TForm1.Button1Click(Sender: TObject);
    var
      List1: array[0..3] of Double;
      List2: array[5..17] of Double;
      X: Word;
      S, TempStr: string;
    begin
      for X := Low(List1) to High(List1) do
          List1[X] := X * 3.4;
      for X := Low(List2) to High(List2) do
          List2[X] := X * 0.0123;
      Str(Sum(List1):4:2, S);
      S := 'Sum of List1: ' + S + #13#10;
      S := S + 'Sum of List2: ';
      Str(Sum(List2):4:2, TempStr);  S := S + TempStr;
      MessageDlg(s,mtcustom, [mbOk], 0);
    end;
      

  2.   

    把Sum函数放在Button1Click前面,因为Delphi默认不是向后调用函数的,不然你就在前面声明Sum函数
      

  3.   

    一楼正确
    或者将function Sum( var X: array of Double): Double;改为
    function TForm1.Sum( var X: array of Double): Double;
    并在前面加上声明.
      

  4.   

    同意以上兄台!不过规劝楼顶的兄台:没有特殊情况下不要这样写程序,要记住:你现在学的可是OOP!