Вверх ↑
Этот топик читают: Гость
Ответов: 2059
Рейтинг: 132
#1: 2015-03-22 20:48:23 ЛС | профиль | цитата
Можно-ли управлять условной компиляцией, поместив соответствующий пункт в список свойств?
Фрагмент описания из KOL:
[offtop]NewTree( Parent ) или NewTree( Parent, Name ) - создает новый узел, подчиненный "родительскому" узлу Parent (может быть nil, для создания узла самого верхнего уровня). Возвращается указатель на созданный объект, типа PTree. Первый вариант конструктора следует использовать в проектах, в которых имеется символ условной компиляции TREE_NONAME. В этом случае узлы дерева не имеют свойства Name и не предназначены для хранения строки в качестве основного элемента узла. [/offtop]
Допустим такой: WideString и String, или надо делать два отдельных компонента?
Если можно, то как?
карма: 6

0
Ответов: 211
Рейтинг: 52
#2: 2015-03-24 02:16:35 ЛС | профиль | цитата
Привет всем, привет flint2, студия управляет условной компиляцией глобально(сервис->компиляторы->командной строка) и посредством файла def.inc
Последний экспортирует только _DEBUG_,_DEBUG_MAIL_,_PROTECT_STD_,_PROTECT_MAX_,_ERROR_STD_,_ERROR_MAX_.
Остальное только вручную, так в KOL, это файлы KOLDEF.inc и delphidef.inc
Если ваш элемент будет использовать ANSI/wide в зависимости от типа визуальной формы NON/UNICODE, то используйте ifdef UNICODE_CTRLS для разграничения кода.
В остальных случаях, непосредственно в поле класса можно использовать флаг вроде _prop_Mode:byte; и соответствующее ему определение в ini элемента:Mode=|4|0|ANSIString,WideString. Так же необходим указатель типа "pointer" в поле класса для хранения указателя на строку.
В последствии приводить его к pAnsiChar или pWideChar в зависимости от состояния флага _prop_Mode. Это как вариант,
или писать 2 компонента
Да, и в Delphi2009 и выше string = WideString a char = WideChar если иное не определено
карма: 1
слтв
1
Голосовали:sla8a
Ответов: 2059
Рейтинг: 132
#3: 2015-03-24 17:22:32 ЛС | профиль | цитата
Minkovsky Спасибо за ответ.
Остальное только вручную, так в KOL, это файлы KOLDEF.inc и delphidef.inc

Да...
то используйте ifdef UNICODE_CTRLS для разграничения кода.

Это я для примера про UNICODE.
Просто было бы очень красиво иметь связку ifdef со списком свойств компонента.
В остальных случаях, непосредственно в поле класса можно использовать флаг вроде _prop_Mode:byte; и соответствующее ему определение в ini элемента:Mode=|4|0|ANSIString,WideString. Так же необходим указатель типа "pointer" в поле класса для хранения указателя на строку.

Это выход из положения в конкретном случае. В конечном счёте получается IF THEN ELSEE.
карма: 6

0
3
Сообщение
...
Прикрепленные файлы
(файлы не залиты)