forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Blitz3D (http://forum.boolean.name/forumdisplay.php?f=45)
-   -   Разъясните с условиями пожалуйста (http://forum.boolean.name/showthread.php?t=17678)

kostya261 26.12.2012 11:52

Разъясните с условиями пожалуйста
 
Имею такую функцию:

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 ну не присваивается же в условии этой переменной ноль?

ABTOMAT 26.12.2012 12:23

Ответ: Разъясните с условиями пожалуйста
 
Перед означенной строкой сделай
Код:

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

Цитата:

PS ну не присваивается же в условии этой переменной ноль?
Вот я сначала тоже подумал про эту хрестоматийную ошибку, но вспомнил, что Блица это не касается (у него нет отдельно операторов сравнения и присвоения)

kostya261 26.12.2012 12:31

Ответ: Разъясните с условиями пожалуйста
 
Да то же самое и пишет. Когда комментируеш, выводит длинный номер, по которому так понимаю хранится эта модель.
Вставил эту же команду в это условие, отключив RuntimeError, там выдает ноль, дальше эта же команда (DebugLog(model)) выдает опять номер модели.

kostya261 26.12.2012 12:36

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

kostya261 26.12.2012 12:41

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

PS реально полезная команда. Избавляет от написания кучи проверочных строк, которыми у меня программы просто кишили, что бы отследить состояние переменных

ABTOMAT 26.12.2012 17:00

Ответ: Разъясните с условиями пожалуйста
 
Цитата:

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

PS реально полезная команда. Избавляет от написания кучи проверочных строк, которыми у меня программы просто кишили, что бы отследить состояние переменных

Рад что ты подружился с дебаггером :-D Многие новички им пренебрегают и потом сыплют глупыми вопросами.
Есть ещё Stop: можно остановить программу и в дебаггере посмотреть значения переменных в данный момент, а потом продолжить выполнение.
не забывай отключить дебаггер, когда компилишь "на релиз" (а потом назад включить).

kostya261 28.12.2012 15:49

Ответ: Разъясните с условиями пожалуйста
 
Спасибо за советы. Учту.


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot