调用类

时间:2017-02-06 09:41:33

标签: pascal delphi

我在Pascal中创建了一些非常简单的代码,它让我犯了这个错误:

  

项目BugFixing.exe引发异常类EAccessViolation,并在模块“BugFixing.exe”中显示“地址为0040F1EE的访问冲突”消息。写下地址00000004'。

该计划包括2个模块: BugFixing.dpr:

program BugFixing;

{$APPTYPE CONSOLE}

uses
  SysUtils, uLinearProgrammingMainLogic in 'uLinearProgrammingMainLogic.pas', math;

var
MinOrMax : integer ;
Question : TQuestion ;

begin
  try
    Randomize ;
    MinOrMax := RandomRange(0,2) ;
    Question.SetMaximiseQuestion(MinOrMax);

  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
end.

和uLinearProgrammingMainLogic.pas:

    unit uLinearProgrammingMainLogic;

interface

uses sysUtils, math ;

type

TQuestion = class
  private
    MaximiseQuestion : boolean ;
  public
    procedure SetMaximiseQuestion (MinOrMax : integer) ;
end;

implementation

procedure TQuestion.SetMaximiseQuestion(MinOrMax : integer);
begin
  if MinOrMax = 0 then
    MaximiseQuestion := true
  else
    MaximiseQuestion := false ;
end;

end.

如果有人能向我解释为什么这会造成访问冲突,那么我们将不胜感激。提前致谢。 :)

1 个答案:

答案 0 :(得分:1)

在使用之前,必须始终对类进行实例化(TClassType.create)。唯一的例外是类/静态方法,但你不能用那种方式声明它们(这不是基本用法)