![]() |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
![]() |
Tan |
![]()
Сообщение
#1
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 559 Пол: Мужской Реальное имя: Бруно Репутация: ![]() ![]() ![]() |
Доброго времени суток ув. форумчане! Обращаюсь к вам со своей проблемой, для начала опишу текущую картину.
Имеется следующий класс : type Описание функции этого класса : function point.Point (x : real; y : real; id_get : integer) : integer; Типы данных : init_points : array of integer; Так же есть функция которая заполняет переменные xPos, yPos, zPos значениями и вызывает функцию добавления точки. procedure TForm1.GiveValues(); И вот сама ключевая функция AddPoint() : procedure TForm1.AddPoint(); Как я отметил в коде, программа вылетает на строке new_point.Z := zPos + 150; с ошибкой EAccessViolation. Мне кажется это связано с неверной работой с динамическими массивами, но более детально я не могу понять суть этой проблемы. Буду рад помощи, заранее спасибо. Сообщение отредактировано: Tan - 1.11.2011 14:16 -------------------- Цитата Imagination is more important than knowledge. Albert Einstein |
![]() ![]() |
IUnknown |
![]()
Сообщение
#2
|
![]() a.k.a. volvo877 ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 013 Пол: Мужской Репутация: ![]() ![]() ![]() |
Я ж написал:
Цитата Хотя бы перед именем поля поставь Self Т.е., вот так: function point.Point (x : real; y : real; Var id_get : integer) : integer;(Паскаль, как и все языки его группы, не делает разницы между X и x, это для него одна и та же переменная. И то, что ты делаешь - это присвоение параметру самого себя. Смысла - никакого, поле класса вообще не затрагивается). Если перед id_get не поставишь Var, то изменение ее значения внутри Point.Point наружу не выйдет. Только смысла в этом параметре вообще ноль: "если id_get не (-1), то присвоить его значению id, которое в самом начале принудительно ставится в (-1). Если же оно и так (-1) - то ничего не делать" Вдумайся, что тут написано. Это именно то, что ты запрограммировал. Цитата Не надо заменять его на while, потому что там останется тот же дурацкий алгоритм за квадрат. Там останется не "тот же дурацкий", а корректно работающий (в отличие от For-а, я написал почему) алгоритм за квадрат...Сообщение отредактировано: IUnknown - 2.11.2011 14:41 |
![]() ![]() |
![]() |
Текстовая версия | 26.07.2025 13:46 |