ich einige sehr einfachen Code in Pascal vorgenommen haben, die mir diesen Fehler bekommen:Pascal Zugriffsverletzung, wenn eine Variable in einer Klasse aufrufen
Project BugFixing.exe raised exception class EAccessViolation with message 'Access violation at address 0040F1EE in module 'BugFixing.exe'. Write of address 00000004'.
Das Programm besteht aus zwei Modulen: 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.
Und 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.
Wenn jemand exp könnte lag mir, warum dies eine Zugriffsverletzung erstellt, würde das geschätzt werden. Danke im Voraus. :)
Ich habe versucht, einen Konstruktor namens "Create" hinzuzufügen und damit den Wert von MaximiseQuestion zu setzen , aber das scheint den gleichen Fehler zu erzeugen, als ob ich eine Prozedur verwendet hätte. Mißverstehe ich deinen Rat? –
Suchen Sie die Syntax in Ihrem Delphi-Handbuch oder in der Hilfe. Es ist instancevariable: = tclasstype.create nicht instancevariable.create. –
Danke! Dies scheint gut zu funktionieren. –