PascalABCCompiler.Core v3.2.0.1311 (30.08.2016), debug version
Runtime version: 4.0.30319.42000
OS version: Microsoft Windows NT 6.2.9200.0
Processor count: 4
WorkingSet: 153792 kb
Здравствуйте!
Программа выдает такую ошибку при запуске: “Ошибка времени выполнения: Среда выполнения Common Language Runtime обнаружила недопустимую программу.”
Выделяет строку с созданием класса. Т.е.:
S := new Snake; // Snake - класс с множеством функций и описанной процедурой конструктора
Интересно, что при компиляции ошибка не появляется, а только при запуске программы.
С чем это может быть связанно, а точнее, связанно ли это с Паскалем или же с системой?
type
Snake = class
public
constructor create;
end;
procedure Snake.Create;
begin
writeln(9);
end;
var S:Snake;
BEGIN
S := new Snake;
END.
Версию среды обновил с сайта. Ошибка повторяется и на обновленной версии и на другом компьютере.
Ошибка исчезает если описание конструктора внести в тело класса.
Дело в том, что у конструктора весьма большое описание и в теле класса оно смотрится не очень хорошо.
Временно решил проблему, создав еще одну функцию в классе которую и вызываю в конструкторе, уже описанном в самом классе:
type
Snake = class
private procedure CreateTmp;
public
constructor create;
begin
CreateTmp;
end;
end;
procedure Snake.CreateTmp;
begin
writeln(9);
end;
var S:Snake;
BEGIN
S := new Snake;
END.
Хм, готов поклясться, что еще вчера утром, на мое “constructor Snake.Create” он мне сообщил что слово “constructor” надо использовать только в описании класса, хотя сейчас работает нормально. Видимо я что-то вчера не так понял, а потом странное исключение вконец меня запутало
Спасибо за помощь!