J'ai fait un code très simple Pascal qui me reçoit cette erreur:Violation d'accès lors de l'appel d'une variable dans une classe
Project BugFixing.exe raised exception class EAccessViolation with message 'Access violation at address 0040F1EE in module 'BugFixing.exe'. Write of address 00000004'.
Le programme se compose de 2 modules: 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.
Et 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.
Si quelqu'un pouvait exp Je me demande pourquoi cela crée une violation d'accès, ce serait apprécié. Merci d'avance. :)
J'ai essayé d'ajouter un constructeur appelé "Create" et de l'utiliser pour définir la valeur de MaximiseQuestion , mais cela semble créer la même erreur que si j'avais utilisé une procédure. Est-ce que je ne comprends pas votre conseil? –
Recherchez la syntaxe dans votre manuel delphi ou aidez-nous. C'est instancevariable: = tclasstype.create not instancevariable.create. –
Merci! Cela semble fonctionner correctement. –