Нарушение доступа к Паскалю при вызове переменной в классе
Я сделал очень простой код на Паскале, который выдает мне эту ошибку:
Проект 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) перед использованием. Единственное исключение - это классовые / статические методы, но вы не объявляете их таким образом (и это в любом случае не является базовым)