ninjakaka
offline
Опыт:
39Активность: |
[Решено] Кусок кода по непонятным причинам блокирует функцию.
О великие джассеры и духи варкрафта, взываю к вашей помощи! Помогите пожалуйста, ситуация на мой взгляд из ряда вон!
В общем есть у меня в карте системка общения жителей в деревне. Состоит из триггера продвижения сообщений на экране (он ещё потом и удаляет сообщение когда оно продвинулось достаточно высоко), массива структур с информацией о сообщениях (само сообщение, его текущее положение, юнит который сказал это сообщение и т.п.), функции добавления нового сообщения в структуру, большого массива с диалогами, функции Dialog, которая принимает номер диалога, людишек и просто по очереди над ними показывает сообщения из массива, ну и функция поиска людишек, которые не заняты общением.
В функции dialog есть загадочное место. Если туда пихнуть простенький код с if'ами и else'ами, то она продолжает выполняться, если же этот код закомментировать, то функции которые идут после этих if'ов и else'ов не выполняются, функция будто зависает. Это противоречит моей человеческой логике и я скоро ежа рожу пока не пойму в чём проблема.
Вот код Dialog. Функция не выполняется после закомментированного куска кода, если его раскомментировать, то всё работает.
((кат Код Dialog
))
Помогите пожалуйста! В чём проблема? Где я мог ошибиться? По вашим запросам предоставлю дополнительную информацию если чего то не хватает.
Немного подправил код. Решение: Нашёл ошибку. Обращение по неинициализированной переменной, наверняка варик скрыл от меня Access Violation. Заметьте, есть объявление переменной towho
В закомментированном коде есть
Как раз в нём и происходила инициализация, а дальше идёт
Ключевое слово GetUnitName(u[towho]) - обращение по неинициализированной переменной towho.
Не забывайте инициализировать ваши локальные переменные перед обращением к ним!!! =) Отредактировано ninjakaka, 30.01.2013 в 16:04. |
30.01.2013, 00:08 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Киря
offline
Опыт:
769Активность: |
к чему вообще?
либо они мертвы, либо
5.
очень-очень плохо, если стоит в циклах |
30.01.2013, 01:36 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
quq_CCCP
Я белый и пушистый!
offline
Опыт:
94,544Активность: |
ninjakaka, цикл похоже убивает поток, поскольку когд он выолняется чертову кучу раз.... куча бж функций, массивы локального типа тоже не лучшее решение... |
30.01.2013, 07:01 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ninjakaka
offline
Опыт:
39Активность: |
Проблема не в том что цикл убивает поток. Цикл выполняется максимум 15 раз, т.к. нулевая строка попадается где-то на 15 сообщении, в итоге срабатывает s == null и цикл завершается. Ты немного не понял проблему, ведь если я раскомментирую закомментированный кусок, всё снова начнёт выполняться. Проблема где-то глубже. |
30.01.2013, 10:42 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DioD
offline
Опыт:
45,184Активность: |
отладку нормальную напишите
|
30.01.2013, 11:28 | #5
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|