![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 24.01.2011
Сообщений: 10
|
![]()
Есть некий код волнового алгоритма работает хорошо если бы не одно НО, в процессе поиска пути непонятно из-за чего нарушется индексация объектов.
Вот код. Код:
![]() ![]() PS - Delphi 7 |
![]() |
![]() |
![]() |
#2 |
Новичок
Джуниор
Регистрация: 24.01.2011
Сообщений: 10
|
![]()
Продолжение кода...
Код:
|
![]() |
![]() |
![]() |
#3 |
Подтвердите свой е-майл
Регистрация: 19.12.2010
Сообщений: 808
|
![]()
Что за процедуры ?
Код:
Код:
З.Ы. Прежде чем накладывать на себя руки или начинать кусаться, приложите еще немного усилий и сообщите, какие индексы портятся, как портятся... Уже поздно и все экстрасенсы спят... Последний раз редактировалось asmodey1; 24.01.2011 в 01:07. |
![]() |
![]() |
![]() |
#4 |
Новичок
Джуниор
Регистрация: 24.01.2011
Сообщений: 10
|
![]() Код:
Вот объекты и переменные Код:
|
![]() |
![]() |
![]() |
#5 |
Новичок
Джуниор
Регистрация: 24.01.2011
Сообщений: 10
|
![]()
Иными словами нерабочий объект ищет работу, в момент поиск становится рабочим и продолжает искать работу из-за этого утечка памяти, и выход за границы массива, если необходимо выложу весь код касаемый индексов, но ошибку вывел только тут путем вывода вот этой не точности по поводу работы и индекса поиска.
|
![]() |
![]() |
![]() |
#6 |
Подтвердите свой е-майл
Регистрация: 19.12.2010
Сообщений: 808
|
![]()
Ну, я ж вам показал - ваши строки //ТУТ ВСЕ ГУД и //А ВОТ ТУТ УЖЕ НЕТ абсолютно идентичны, за исключением номера шага.
А вот между ними у вас всегда выполняется функция CheckTarget(), в которой происходит вызов NewWork() и SearchWork(). То есть "поплыть" ваши индексы могут только в CheckTarget()... Кстати, вы так и не сказали, какой индекс плывет - S ? Так это вроде и не индекс... Ну так сделайте поиск по "S:=" и т.п., и проверьте все места, где он меняется. Хотя, с другой стороны, я все просмотрел - эта переменная участвует только в операциях сравнения... По шагам-то отлаживали ? Может, у вас там еще и таймер какой-нибудь есть, по событию которого вызывается нечто, портящее индексы ? А может, вы просто где-то допустили описку в имени переменной... |
![]() |
![]() |
![]() |
#7 |
Новичок
Джуниор
Регистрация: 24.01.2011
Сообщений: 10
|
![]()
Меняется индекс работы, но непонятно в каком месте он может измениться только при NeWWork, но при этом процедура должна завершиться exit, но почему то она либо продолжается либо я не знаю если посмотреть на проверочные условия то они одинаковы но последнее вообще не должно вызываться никогда.\
ККрасным помечен индекс который меняется с -1 на индекс работы. Синим что ищем. Код:
Код:
Сам объект id тотже проверял по всем параметрам. Скажите пожалуйста хотябы что еще может на это повлиять... ![]() |
![]() |
![]() |
![]() |
#8 |
Подтвердите свой е-майл
Регистрация: 19.12.2010
Сообщений: 808
|
![]()
MainUnit.Dots[id].Work у вас меняется в двух местах:
MainUnit.Dots[p].Work:=LengthArrWorks-1; и MainUnit.Dots[p].Work:=id; Ставьте туда бряки и смотрите начальное значение и конечное... |
![]() |
![]() |
![]() |
#9 |
Старожил
Регистрация: 13.08.2009
Сообщений: 2,581
|
![]()
Рекомендую ещё включить опцию Range Check Errors и сделать проекту Build (не Compile).
Есть хороший шанс на переполнение буфера.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
|
![]() |
![]() |
![]() |
#10 |
Новичок
Джуниор
Регистрация: 24.01.2011
Сообщений: 10
|
![]() |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Динамические массивы | [ICQ] | Помощь студентам | 3 | 20.02.2015 17:31 |
Динамические массивы с++ | maxsept | Общие вопросы C/C++ | 2 | 27.10.2010 20:16 |
Динамические массивы и массивы варианты | N@stya | Помощь студентам | 0 | 11.06.2010 21:09 |
Динамические массивы на си | Sha-sha | Помощь студентам | 1 | 19.05.2009 18:55 |
динамические массивы | funky | Общие вопросы C/C++ | 3 | 12.05.2009 01:54 |