Вверх ↑
Этот топик читают: Гость
Ответов: 1304
Рейтинг: 405
#241: 2008-12-16 00:14:21 ЛС | профиль | цитата
bublik, труды по доработке компилятора были не напрасны, часть примеров, удалось запустить (Texturing, Scene, Button). Завтра попробую разобраться с остальными примерами.
карма: 3

0
Администрация
Ответов: 15294
Рейтинг: 1518
#242: 2008-12-16 11:15:37 ЛС | профиль | цитата
bublik писал(а):
Нужно каким то образом по окончании компиляции поменять рабочую папку на папку с проектом.

теоритически можно при запуске процесса указать текущую директорию для него
карма: 26
0
Ответов: 563
Рейтинг: 54
#243: 2008-12-16 17:36:43 ЛС | профиль | цитата
Dilma: непонял немного. хотя странно как то, при запуске собранного exe указывается полный путь к нему а не относительный, так что проблем вроде бы не должно быть с текущей рабочей директорией.

MAV: если запустился Scene то и Scene2 должен тоже. Скоро выложу новую исправленную версию пакета. да даже текущую, я поставил на свежий HiAsm: DarkBasic19,DBC2 + новая оболочка
В следующей версии будут:
1. исправлены примеры
2. в компиляторе DBC4 уже будет включена новая оболочка
3. добавлены несколько новых компонентов
4. исправлены некоторые компоненты
------------ Дoбавленo:

Новые версии пакета и оболочки в первом посте ссылки.
карма: 0

1
Голосовали:MAV
Ответов: 1304
Рейтинг: 405
#244: 2008-12-16 20:20:44 ЛС | профиль | цитата
bublik, исправления вносишь, что протестировать не успеваю, небось по ночам не спишь .
Скачал пакет 1.20, не запустился пример "fog", компилятор DB пишет ошибка в линии 43. Вобщем сильно порадовало появление компонентов "Memory/For" +1.
карма: 3

0
Ответов: 563
Рейтинг: 54
#245: 2008-12-16 20:48:43 ЛС | профиль | цитата
0
карма: 0

0
Ответов: 1304
Рейтинг: 405
#246: 2008-12-16 21:10:13 ЛС | профиль | цитата
bublik писал(а):
Ошибка найдена, проблема в типах переменных, не успел внести нововведение в оболочку, которое проводит дебаг переменных. дело в том что в darkbasic отсутствует объявление типов переменных. непосредственно в самой переменной например так:
variable#=0 //числовое значение
variable$="Hello" //символьный тип

Позновательно, почти что на китайском .
hiGlobalVar.hws изменил пример запустился, продолжаем разбираться, хотя свою новогодню заставку в OpenGL ума не хватает портировать в DB.
карма: 3

0
Администрация
Ответов: 15294
Рейтинг: 1518
#247: 2008-12-16 21:16:21 ЛС | профиль | цитата
bublik, если в событиях элементов в потоке возвращать наиболее часто используемое для него св-во, то в будущем есть большая вероятность построить более оптимальную схему. Советую не забывать это простое правило и тогда пакет будет более гибок и удобен в использование. Скажем для GlobalVar даже думать над этим не надо было - достаточно открыть аналогичный код из пакета WEB и посмотреть как он там сделан и что возвращает по onValue
карма: 26
0
Ответов: 563
Рейтинг: 54
#248: 2008-12-17 16:57:28 ЛС | профиль | цитата
мм... надо подумать...
сейчас у меня не особо много времени-проблемы в школе, на каникулах займусь вплотную, а пока что буду выкраивать время.

------------ Дoбавленo:
алгоритм для Memory я придумал и уже встроил в оболочку, там будет определяться тип данных и меняться переменная.
а вот Var и GlobalVar можно использовать только для операций с числовыми данными. в принципе другого от него не требуется.
вобщем думаю проблема решена.

хотя свою новогодню заставку в OpenGL ума не хватает портировать в DB.
почему? компонентов не хватает? может смогу что то ещё добавить
------------ Дoбавленo:

Сделал новый компонент: RObject-возвращает индекс объекта под курсором мыши.
карма: 0

0
Администрация
Ответов: 15294
Рейтинг: 1518
#249: 2008-12-17 21:45:50 ЛС | профиль | цитата
bublik, у тебя direct.inc не заданы символы начала и конца строки из-за чего кодогенератор их автоматически и не проставляет


#pas
lngs:array[0..lng_count-1] of TLangRec = (
(entry:'EntryPoint'; name:'darkbasic'; str_del_o:''; str_del_c:''; var_mask:''; tostr_proc:_tostr_proc)
);

а так же отсутствие var_mask может привести к проблемам при портировании

Еще я не понял смысла элемента StrCatEx
карма: 26
0
Ответов: 563
Рейтинг: 54
#250: 2008-12-17 23:58:51 ЛС | профиль | цитата
Dilma: судя по str_del_o например я подумал что кодогенератор удаляет эти символы сейчас проэксперементирую ;)
StrCatEx это была заготовка, потом я про неё забыл так и осталось подобие обычного StrCat
Спасибо за замечания и подсказки!
----
Сделал компонент управления камерой с помощью мыши
------------ Дoбавленo:

Кстати в FireFox не пашут JavaScript, точнее они пашут, но вот при нажатии на элемент (BB код например code) он не вставляется в поле текста, приходится вручную вписывать БиБи коды сильно надоедает... Что можно сделать не меняя браузер?
------------ Дoбавленo:

Сделал компонент Rem для записи в код комментариев, удобно если вам нужен только исходник. В компонент If_else добавлены отступы, теперь ориентироваться в коде проще. Позже ещё как ни будь улучшу читабельность кода.
карма: 0

0
Администрация
Ответов: 15294
Рейтинг: 1518
#251: 2008-12-18 00:51:06 ЛС | профиль | цитата
bublik писал(а):
удя по str_del_o например я подумал что кодогенератор удаляет эти символы

del от слова "delimiter" - разделитель, "o" - open(открывающий), "с" - close(закрывающий)

bublik писал(а):
Кстати в FireFox не пашут JavaScript,

нужно добавить себе в автозагрузку плагин для FF http://dev.hiasm.com/forum.html?q=3&t=11694

по пакету если откровенно говорить, то исправлять там много чего - фактически каждый элемент стоило б. Прям порциями по порядку:
Loop
у нас во всех пакетах все типы циклов имеют точку onEnd

RGB
элементы такого плана в рамках FTCG желательно строить по общему принципу, описаному в справке Элементы пакета WEB в разделе Организация точек, т.е. с наличием еще и метода с событием. Так же замечание по синтаксису - надо придерживаться общего формата

#hws
func RGB
return('rgb( '&& Red && ',' && Green && ',' && Blue && ')')
end

GlobalVar
не знаю зачем было делать аж три элемента для работы с переменными - var, GlobalVar и Memory - помоему достаточно было обойтись одним с учетом того, что в пакете нет разделения на области видимости. Однако если хочется именно так, то надо все три элемента делать с одинаковым функционалом

Text
замечание по коду - не выдержан принятый для HWS стиль оформления.
все св-ва со списком значений, которые используются только на этапе сборки проекта и стоят в условиях проверки надо делать типом 4(combo), а не 14(comboex). Вот такие проверки:

#hws
if(Transparent = 'True')

end
выполняются на порядок медленнее, чем

#hws
if(Transparent)

end
и влекут к увеличению времени сборки при увеличение количества элементов в схеме.
вот такие проверки:

#hws
if(Size<>0)

end
надо заменять на

#hws
if(isndef(Size))

end
код в таком стиле делает все тоже самое, но работает быстрее и в лучшей степени переносим(поскольку не зависит от конкретного значения св-ва)
------------ Дoбавленo:

да и еще - чисто как пользователь советую верхние точки в элементах располагать в порядке убывания степени их использования. Вот скажем тут:

Color
Text
Size
Font
X
Y
я почему-то очень сильно сомневаюсь, что буду Size и Font менять у надписи чаще, чем X и Y Зачем тогда располагать их настолько далеко от данных, которые есть в потоке? Да и зачем мне вообще точки для св-тв, которые я динамически менять в ближайшем будущем вообще не собираюсь? Вот так надо было из описывать:

X=Отступ текста от левого края|4|1
Y=Отступ текста от вехнего края|4|1
Text=Текст|4|2
Color=Цвет текста|4|1
*Size=Размер текста|4|1
*Font=Название шрифта|4|0
и типы проставлять не забываем - в пакетах FTCG это влияет не только на их цвет в редакторе, но и на правильность результирующего кода
карма: 26
0
Ответов: 563
Рейтинг: 54
#252: 2008-12-18 15:40:00 ЛС | профиль | цитата
На счёт 3х элементов для работы с переменными вы правы, достаточно оставить один Memory
Спасибо за замечания, буду править...
------------ Дoбавленo:

Только сейчас дошло на сколько важно выставить типы данных в ini
------------ Дoбавленo:

Какой смысл добавлять в Loop точку onEnd если это непрерывный цикл?
------------ Дoбавленo:

Типы установил в INI, начинаю править код элементов...
карма: 0

0
Администрация
Ответов: 15294
Рейтинг: 1518
#253: 2008-12-18 15:42:40 ЛС | профиль | цитата
bublik писал(а):
Какой смысл добавлять в Loop точку onEnd если это непрерывный цикл?

действительно - не обратил внимания на то, что условий там нет, и что циклов оказывается. Тогда не понятно почему они разнесены по разным вкладкам? Может быть стоило сделать что-то общее?
карма: 26
0
Ответов: 563
Рейтинг: 54
#254: 2008-12-18 16:01:09 ЛС | профиль | цитата
блин всё через Ж, ррр бесит уже
карма: 0

0
Администрация
Ответов: 15294
Рейтинг: 1518
#255: 2008-12-18 16:01:11 ЛС | профиль | цитата
bublik, вообще глядя на структуру элементов мне начинает казаться, что палитра делается по образу и подобию элементов пакета Delphi, что вообще говоря является шагом назад. Структуры более высокого порядка представлены пакетами WEB, QT и прочими FTCG нследниками. Поясню на примере: смотрим элемент while

#hws
func doWhile
println('while ' + Op1 + While + Op2)
event(onWhile)
println('endwhile')
end
и видим повторение интерфейса элемента Repeat пакета Delphi(за исключением события onEndWhile). Все бы ничего, но что делать если я хочу не просто сравнить А с Б, но еще и А с С Ответ очевиден: перед циклом поставить два IF, провести эти сравнения и сохранить результаты, а потом уже их сравнивать в while. В WEB тот же элемент может возвращать условие по нижней точке и в результате выдавать 100% оптимальный код:

#bas
while A = B and A = C
...
endwhile

хотел пример кода из DB привести, но оказалось, что в операторах сравнения нет and... В общем логичнее делать так:

#hws
func doWhile
println('while ' + Condition)
block.inclvl()
event(onWhile)
block.declvl()
println('endwhile')
event(onEndWhile)
end
где Condition это точка типа Integer
карма: 26
0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)