ПРоблемы с девелопером

Общие вопросы по оборудованию и программному обеспечению Компании ДЭП
Ильдар
Сообщения: 65
Зарегистрирован: 27 дек 2007, 12:38
Откуда: Ташкент, sigma avtomatika

Сообщение Ильдар » 11 авг 2008, 15:14

Девелопер ругается на оператор new!!!


if(!j) j = new q();
------------^
"func4.c",26 Error[100]: Undeclared identifier: 'new'
"func4.c",26 Error[44]: ';' expected

Errors: 2
Warnings: none


как динамически создать переменную?
C уважением Ильдар Амирханов

Равиль
Сообщения: 58
Зарегистрирован: 08 фев 2005, 14:48

Сообщение Равиль » 11 авг 2008, 18:46

с помощью фунции LocalAlloc

Ильдар
Сообщения: 65
Зарегистрирован: 27 дек 2007, 12:38
Откуда: Ташкент, sigma avtomatika

Сообщение Ильдар » 12 авг 2008, 10:05

А что это за функция?
как ей пользоваться?
C уважением Ильдар Амирханов

Светлана
Сообщения: 329
Зарегистрирован: 06 июн 2005, 15:27
Откуда: Компания ДЭП

Сообщение Светлана » 13 авг 2008, 16:06

Если компонент собирать только под А9 и WinDecont, то new и delete должны работать.
Если компонент собирается и для Decont-182, то для универсальности придется использовать специальные функции выделения памяти из кучи:

typedef void* LOGICAL;
_RTLIMPORT LOGICAL LocalAlloc ( WORD size );
выделение памяти из кучи размером size байт. Возращается указатель void*
_RTLIMPORT BOOL LocalFree ( LOGICAL );
освобождение ранее выделенной из кучи памяти

По-умолчанию компоненты Разработчика после старта кучу не используют, надо поменять это. Меню "Проект->Опции" вкладка "Параметры" установите нужный размер кучи (больше нуля). Кратность размера кучи 1К.