Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D

Ответ
 
Опции темы
Старый 26.12.2012, 11:52   #1
kostya261
AnyKey`щик
 
Регистрация: 27.08.2007
Сообщений: 17
Написано одно полезное сообщение
Разъясните с условиями пожалуйста

Имею такую функцию:

Function LoadProject (path$ = "")

If path$ = "" RuntimeError "Отсутствует фаил проекта!" + Chr$ (13) + " Укажите правильный путь!"

project = ReadFile (path$)
If project = 0 RuntimeError("Отсутствует фаил!")
While Not Eof(project)
ln$ = ReadLine$(project)

;/---------------Загрузка главной модели
If Instr (ln$, "#model = ", 1) Then
path_file$ = Mid$ (ln$, 10)
If path_file$ <> "" Then model = LoadAnimMesh (path_file$)
EndIf
;---------------/

If (model = 0) Then RuntimeError ("Модель не создана!")
If Instr (ln$, "#child = ", 1)
lst.children = New children
lst\mesh_chld = FindChild (model, Mid$(ln$, 10))
If lst\mesh_chld <> 0 EntityColor lst\mesh_chld, Rnd (255), Rnd (255), Rnd (255)
EndIf
Wend
End Function

проблемма в том, что когда коментируеш условие
If (model = 0) Then RuntimeError ("Модель не создана!")
все работает
если оставляеш как есть, model начинает равнятся нулю
чего я не знаю, подскажите пожалуйста
переменную model ставил и глобальной для программы, и локальной для данной функции, результат один. затыкается на этом месте.

PS ну не присваивается же в условии этой переменной ноль?
(Offline)
 
Ответить с цитированием
Старый 26.12.2012, 12:23   #2
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Ответ: Разъясните с условиями пожалуйста

Перед означенной строкой сделай
debugLog(model);
И скажи значение в обоих случаях.

PS ну не присваивается же в условии этой переменной ноль?
Вот я сначала тоже подумал про эту хрестоматийную ошибку, но вспомнил, что Блица это не касается (у него нет отдельно операторов сравнения и присвоения)
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
kostya261 (26.12.2012)
Старый 26.12.2012, 12:31   #3
kostya261
AnyKey`щик
 
Регистрация: 27.08.2007
Сообщений: 17
Написано одно полезное сообщение
Ответ: Разъясните с условиями пожалуйста

Да то же самое и пишет. Когда комментируеш, выводит длинный номер, по которому так понимаю хранится эта модель.
Вставил эту же команду в это условие, отключив RuntimeError, там выдает ноль, дальше эта же команда (DebugLog(model)) выдает опять номер модели.
(Offline)
 
Ответить с цитированием
Старый 26.12.2012, 12:36   #4
kostya261
AnyKey`щик
 
Регистрация: 27.08.2007
Сообщений: 17
Написано одно полезное сообщение
Ответ: Разъясните с условиями пожалуйста

Я пробывал поступить иначе... В условии If Instr (ln$, "#model = ", 1) Then
вставлял дополнительную переменную, которая в начале функции равняется нулю, а когда попадается `#model =` начинает равнятся единице. И вот чудо, проблемма та же. Хотя если исключаеш влиение этой переменной (ну так же коментируеш с ней условие), все сново работает.
(Offline)
 
Ответить с цитированием
Старый 26.12.2012, 12:41   #5
kostya261
AnyKey`щик
 
Регистрация: 27.08.2007
Сообщений: 17
Написано одно полезное сообщение
Ответ: Разъясните с условиями пожалуйста

Нашел проблемму
Естественно САМ дурак.
Если интересно опишу.
В файле проекта, первая строчка должна идти #model = xxx.3ds
если другая, то естественно в первом проходе цикла model = 0, и RuntimeError просто останавливает программу, спасибо за полезную команду... никогда раньше не пользовался (debugLog)

PS реально полезная команда. Избавляет от написания кучи проверочных строк, которыми у меня программы просто кишили, что бы отследить состояние переменных
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
ABTOMAT (26.12.2012)
Старый 26.12.2012, 17:00   #6
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Ответ: Разъясните с условиями пожалуйста

Сообщение от kostya261 Посмотреть сообщение
Нашел проблемму
Естественно САМ дурак.
Если интересно опишу.
В файле проекта, первая строчка должна идти #model = xxx.3ds
если другая, то естественно в первом проходе цикла model = 0, и RuntimeError просто останавливает программу, спасибо за полезную команду... никогда раньше не пользовался (debugLog)

PS реально полезная команда. Избавляет от написания кучи проверочных строк, которыми у меня программы просто кишили, что бы отследить состояние переменных
Рад что ты подружился с дебаггером Многие новички им пренебрегают и потом сыплют глупыми вопросами.
Есть ещё Stop: можно остановить программу и в дебаггере посмотреть значения переменных в данный момент, а потом продолжить выполнение.
не забывай отключить дебаггер, когда компилишь "на релиз" (а потом назад включить).
(Offline)
 
Ответить с цитированием
Старый 28.12.2012, 15:49   #7
kostya261
AnyKey`щик
 
Регистрация: 27.08.2007
Сообщений: 17
Написано одно полезное сообщение
Ответ: Разъясните с условиями пожалуйста

Спасибо за советы. Учту.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 14:06.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com