Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Delphi: Для новичков > Access Violtation в Trecord = a:array of ^Trecord |
Автор: evorios 12.10.2012, 18:13 | ||
Помогите разобраться. Так должно быть ![]() А так он глючит ![]()
Access Violtation происходит в строке: SetLength(free.neighbor.a[l].neighbor.a, Length(free.neighbor.a[l].neighbor.a)+1); Поможет ли мне переход от record к class? Или это можно как-то обойти? |
Автор: DarkProg 12.10.2012, 22:02 | ||||
Мнда, ничё не понятно, где что и как работает... Одно скажу - выкиньте ненужные TRecord, потому что они даром никому не нужны, за одно и приведёте свой код в порядок. Вот так правильно вы делаете
А вот так нет
Кстати не увидел выделение память под элементы PFreePlace ;) P.S. Есть предпосылки что дорастаете до классов, так что можете попробовать перейти на классы. |
Автор: northener 13.10.2012, 00:36 | ||
Возможно поможет. Но для начала понимания объясните (для себя в первую очередь, а во-вторую для нас) значения параметров вот в этой процедуре:
И что она по вашему делает? |
Автор: Чучмек 13.10.2012, 08:33 |
evorios, все как сказал DarkProg. Где выделяется память под free.neighbor.a[l] ??? Будешь добавлять по одному элементу за раз, быстро заездишь лошадку. |
Автор: evorios 16.10.2012, 11:36 | ||
Вот первоначальный вариант. С записью а я экспериментировал.
Как видно из данного кода не важно выделено место под free.neighbor[l] или нет. Элементы temp.free создаются уровнем выше. Я ответил на все вопросы. |