Вверх ↑
Ответов: 5446
Рейтинг: 323
#1: 2008-04-20 13:06:58 ЛС | профиль | цитата
Dilma, помоги разобраться, почему генерируется такой код (пример Browse)?
#cpp
if (dlg2.DoModal() == wxID_OK)
{
op_str2 = dlg2GetPath();
listbox3->Append(_T(""));
}

В QT получается правильно:
#cpp
QString op_str2 = QFileDialog::getExistingDirectory (this, "Select Object", "");
if(!op_str2.isEmpty()) {
listbox3->addItem(op_str2);
}

В прищепке - минимально нужный (для поиска ошибки) набор файлов пакета wxMSW. Иконки, make - из QT; Codegen.dpr - SVN.

------------ Дoбавленo:


Ещё фокус - ошибка CodeGen (доступ по адресу 0).

Добавляем файл includes.hws:
func add_include(f,is_local)
trace ('>>>')
fvar(old)
fvar(incfile)
if (not isset(inclist))
gvar(inclist)
end

trace('>>> is_local')
trace('>>> ' + is_local)

if (is_local == 1)
trace('1')
incfile = '"'
trace('2')
incfile = incfile+f
trace('3')
incfile = incfile+'"'
trace('0')
else
incfile = '<'+f+'>'

trace('>>file')
trace('>>' + f)
trace('>> incfile')
trace('>>' + incfile)

if (pos(incfile,inclist) < 0)
inclist = inclist+incfile
old = block.select(BLK_INC)
trace('>>'+BLK_INC)
println('#include ',incfile)
block.select(old)
end
end

Меняем файл hiEntryPoint следующим образом:
include("wincontrolworks")
include("includes") //+++
func doStart
//... cut ...
println(' ')
add_include("wx/somefile.h", 1) //+++
block.copyhere(BLK_INC)

Получаем креш:
Access violation at address 00FBAA1F in module 'CodeGen.dll'. Read of address 00000000.

в Build log видим следующее:
Build start...
Generated code
>>>
>>> is_local
>>> 1


------------ Дoбавленo:

Для любопытных: код в архиве в прищепке содержт (по крайней мере) 5 ошибок, как в коде скриптов, так и в генерируемом коде. Когда пакет будет готов - он сразу же появится на SVN.
карма: 1

0
файлы: 1wxmsw.rar [14.2KB] [292]