2017-02-07 11 views
2

Всякий раз, когда я бегу SafteyDepositBox.SetNewCode, я получаю runtime error 216. Любая идея, что вызывает это? Это ошибка:Pascal - Что вызывает эту ошибку времени выполнения (216)?

Ошибка выполнения 216 в $ 00401EFC
$ 00401EFC
$ 0040153D

$ 00401596
$ 00406E31

program Boxy; 
{$MODE OBJFPC} 
{$M+} 
type 
SDB = class 
    private 
    State : string; 
    Code : string; 
    public 
    Constructor Create(); 
    procedure SetNewCode(newcode:string); 
    function Valid(s:string):boolean; 
end; 

constructor SDB.Create(); 
begin 
State := 'Open-NoCode'; 
Code := ''; 
end; 

procedure SDB.SetNewCode(newcode:string); 
begin 
Code := newcode; 
writeln(Code); 
end; 

function SDB.Valid(s:string):boolean; 
var 
IsValid : boolean; 
begin 
If (length(s) = 4) then 
    IsValid := true 
else 
    IsValid := false; 
Valid := IsValid; 
end; 

var 
SafetyDepositBox : SDB; 
begin 
SafetyDepositBox.Create(); 
SafetyDepositBox.SetNewCode('r2d2');// runtime error 216 here 
end. 
+0

Посмотреть этот вопрос задал вчера: http://stackoverflow.com/questions/42064576/pascal-access-violation-when-calling-a-variable -in-a-class –

+0

Вы также можете скомпилировать с параметрами '-gp -gl' FPC, чтобы получить дополнительную помощь, а не исходный дамп. – tonypdmtr

ответ

3

OMG вы просто заставили меня вспомнить Паскаля!

Это, как вы вызываете конструктор объекта:

SafetyDepositBox := SDB.Create(); 
+0

Ikr. Я сам кодер C#. Это просто для школьного материала. –