Нарушение доступа к Паскалю при вызове переменной в классе

Я сделал очень простой код на Паскале, который выдает мне эту ошибку:

Проект BugFixing.exe поднял класс исключений EAccessViolation с сообщением "Нарушение прав доступа по адресу 0040F1EE в модуле" BugFixing.exe ". Написать адрес 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 ответ

Решение

Класс всегда должен быть создан (TClassType.create) перед использованием. Единственное исключение - это классовые / статические методы, но вы не объявляете их таким образом (и это в любом случае не является базовым)

Другие вопросы по тегам