我定义了一个结构
type
  AppInfo=record
  xmin:integer;
  passmin:integer;
  end;
PAppInfo=^AppInfo;
无论是这个函数
function outofmin(info:PAppinfo):boolean;
begin
  if info^.passmin>=info^.xmin then
    result:=true
  else
  begin
    inc(info^.passmin);
    showmessage(inttostr(info^.passmin));
  end;
end;
还是这个函数
function outofmin(var info:Appinfo):boolean;
begin
  if info.passmin>=info.xmin then
    result:=true
  else
  begin
    inc(info.passmin);
    showmessage(inttostr(info.passmin));
  end;
end;结果这个passmin的值老是等于1
我知道改变形参的值不能返回实参,但我不是已经用了指针来做了吗?
这段代码有什么问题吗?或者说我的理解出了问题?
麻烦大家了。

解决方案 »

  1.   

    因为你就没有给实参或形参赋值.----------------------------- type
      AppInfo=record
      xmin:integer;
      passmin:integer;
      end;
     PAppInfo=^AppInfo;
    type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
        function outofmin(var info:Appinfo):boolean;
      end;var
      Form1: TForm1;implementation{$R *.dfm}
       function Tform1.outofmin(var info:Appinfo):boolean;
    begin
      if info.passmin>=info.xmin then
        result:=true
      else
      begin
        inc(info.passmin);
        showmessage(inttostr(info.passmin));
      end;
    end;
    procedure TForm1.Button1Click(Sender: TObject);
    var
    TT:AppInfo;
    begin
        TT.xmin:=4;
        TT.passmin:=2;
        self.outofmin(TT);
    end;