![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 07.12.2010
Сообщений: 13
|
![]()
Здравствуйте, вопрос такой. Имеется вспомогательный модуль. Одна и та же процедура, запущенная из него, в одном случае работает нормально, в другом - вылетает с ошибкой "acces violation бла-бла-бла". Cуть в том, что в этой процедуре используется дин. массив. Причем, в первом (рабочем) случае, он, как и положено, инициализируется с длиной = 0, в другом по каким-то магическим причинам, он переполнен (длина 141) и забит всякой ересью. SetLength не работает - вылетает всё с той же ошибкой.
Помогите, у меня защита через 2 недели =( |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 15.02.2008
Сообщений: 621
|
![]()
код продцедуры и ее вызова в студию, а если это еще и не чистая (ее работы не зависит от внешних факторов) продцедура, то тогда все в студию =)
Помог? Ну так нажми на весы!
![]() |
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 07.12.2010
Сообщений: 13
|
![]() Код:
Но, как всегда бывает, сейчас включил компьютер - и всё работает... Ничего не понимаю %) |
![]() |
![]() |
![]() |
#4 |
Пользователь
Регистрация: 07.12.2010
Сообщений: 13
|
![]()
Здесь массив оказывается (-лся) захламленным.
Код:
А вот тут всё нормально. Хотя разницы я не вижу. Код:
|
![]() |
![]() |
![]() |
#5 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
![]() Код:
![]() воистину, "Опытный программист на Фортране сумеет создать фортрановскую программу на любом языке". По теме: в первом случае res — это у вас объект, который указывает в никуда, соответствено SetLength(Ua,i);, где Ua — поле неиницализированного объекта, может приводить к любым результатам. Подозреваю, что объекту Resolve во втором случае повезло больше.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
Последний раз редактировалось veniside; 25.01.2011 в 11:46. |
![]() |
![]() |
![]() |
#6 |
Пользователь
Регистрация: 07.12.2010
Сообщений: 13
|
![]()
Почему в никуда? Просто таким тупым (по другому не умею) способом вызывается процедура из другого unit'a. В этом юните есть массив Ua, (принадлежащий объекту equation) который инициализируется в начале процедуры. Resolve и Res - оба объекта создаются абсолютно одинаково, разница лишь в названии.
В случае с объектом Resolve - всё клёво и сказочно. А вот в случае со вторым - беда. Была по крайней мере, после ребута компа почему-то проблема исчезла... Не хотелось бы чтобы вылезло всё это в неподходящий момент %) |
![]() |
![]() |
![]() |
#7 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
![]()
В никуда потому, что res — это указатель. Т.к. он хранится на стеке, то и подхватывает с него любой мусор в качестве указателя. Чтобы он указывал на область памяти, выделенную под экземпляр вашего класса, его нужно создать:
Код:
Код:
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
![]() |
![]() |
![]() |
#8 |
Пользователь
Регистрация: 07.12.2010
Сообщений: 13
|
![]()
Хм... Спасибо) Я так понимаю, нужно написать конструктор и деструктор для Equation, правильно?
|
![]() |
![]() |
![]() |
#9 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
![]()
нет, контструктор и деструктор уже написаны в TObject, от которого наследуются все классы в Дельфи. Нужно не забывать их вызвать.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
![]() |
![]() |
![]() |
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Слияние двух массивов в Delphi | sauron99 | Помощь студентам | 17 | 03.04.2016 09:37 |
Обработка символьных массивов в delphi | Manya-srt | Помощь студентам | 0 | 09.11.2010 16:23 |
Обработка двумерных массивов (матриц) в Delphi | Ulena | Помощь студентам | 1 | 31.03.2010 09:35 |
Delphi передача динамических массивов | world12_tk | Помощь студентам | 7 | 23.12.2009 21:06 |
Инициализация массивов в конструкторе. | jojahti | Общие вопросы C/C++ | 7 | 27.07.2009 13:30 |