Текущий архив: 2006.04.09;
Скачать: CL | DM;
ВнизГлюк компилятора Найти похожие ветки
← →
SPeller © (2004-09-27 14:05) [0]Всем доброго времени суток!
Я тут решил сконвертить под KOL VCL-модули TypInfo, Variants и VarUtils, чтобы они кроме этих трёх имён никого больше не просили для того чтобы хранить данные в классах и получать к ним доступ через RTTI. Вроде всё сконвертил, компилится, ничто из SysUtils не вызывается (компилятор ругается). Двадцать раз проверил uses - нет лишних модулей. Теперь если я попробую где-нибудь в программе вписать в uses какой-либо из этих модулей кроме uVariants (модули называются uTypeInfo, uVarUtils, uVariants), то помимо этих модулей каким-то раком в ЕХЕ включаются SysUtils и VarUtils. Я в растерянности, откуда? Вспомнил потом про подобный глюк, о котором как-то говорил Кладов, и поместил в папку проекта два юнита с пустым содержанием - VarUtils и SysUtils - после этого код оригинальных модулей (+ ~80 КБ) в ЕХЕ не попадает. Кто-нибудь может подсказать, в чем причина такого поведения компилятора, и можно ли это как-нибудь побороть?
Вот ссылка на мои модули: http://spellersoft.narod.ru/files/typeinfo.rar (43КБ).
← →
mdv (2004-09-27 16:29) [1]При использовании переменных типа Variant, модуль Variants линкуется автоматически и из него берутся необходимые функции. А если заменить Variants пустым модулем и работать с Variant, то проект даже не откомпилится. Проверял и никуда от этого не деться. Единственный вариант - везде использовать вызовы процедур из твоего uVariants, а про синтаксис типа Variant:= переменная, забыть.
← →
mdv (2004-09-27 16:30) [2]Удалено модератором
Примечание: Дубль
← →
SPeller © (2004-09-27 16:51) [3]
> При использовании переменных типа Variant, модуль Variants
> линкуется автоматически
Да, линкуется. Но если подключить мой, то все действия с вариантами производятся нормально. Там, на сколько я знаю, всё решает некий VariantManager. И если я подключу свой, то без разницы как модуль называется, главное зарегистрировать свой менеджер. Но однако факт остается - variants.pas линкуется без спросу автоматически.
> А если заменить Variants пустым модулем и работать с Variant,
> то проект даже не откомпилится
Откомпилится, но без менеджера работать не будет.
Очень хочется отбить у компилятора желание линковать этот variants.pas.
← →
mdw © (2005-02-25 10:21) [4]Хотелось бы узнать, чем закончились изыскания на тему Variant и т.п.? Я пытался использовать модули из typeinfo.rar, но не вышло. То ли лыжи не едут, то ли я ...
Вещь очень нужная и актуальная, и если удалось проблему решить, то поделись, пожалуйста. Если нет, то причины? В принципе решаемо? или не стоит время терять?
← →
SPeller © (2005-02-25 11:47) [5]У меня эти три модуля работают хорошо. Всё что мне от них надо - это RTTI. Остальное не тестировал. Пока переводил, напичкал несколько сторонних процедур/функций в эти модули куда попало. Сначала думал "потом приберу", но так как работает, то руки туда уже и не доходяn :)
Вот то что я имею на данный момент. Если кто-то причешит мои модули - буду благодарен :) http://speller.narod.ru/files/typeinfo.rar (50 КБ)
← →
SPeller © (2005-02-25 11:50) [6]Упс
http://speller.narod.ru/files/other/typeinfo.rar
← →
mdw © (2005-08-19 11:22) [7]Что-то, так у меня и не получилось с typeinfo.
Если не заменять Variants на пустой, то еще компилиться, а после замены выдает [Fatal Error] uVariants.pas(1227): Variants unit out of date or corrupted: missing "@VarFromInt".
Что делаю не так? А лучше бы примерчик небольшой.
← →
Thaddy (2005-08-19 12:31) [8]I think RTTI in KOL is a stupid idea, sorry. I expect it will be impossible to write small programs. Also mind the $M+ switch that is necessary! Also note, that the variants unit relies on the system unit and - if variants are used!- vice versa. The compiler uses hardcoded entry points into the variants code (compiler magic) and expects the entry to be there. with sysdcu replacement it is not! With D5 or D4 it should work, though, but 80K will be highly inlikely with RTTI and I even think it would not make much difference with standard VCL, maybe 100-200K
← →
Thaddy (2005-08-19 12:37) [9]Also: you must use classes, not objects to use typeinfo, since poor objects do not allow for a published section, which is necessary to generate typeinfo (-|
Страницы: 1 вся ветка
Текущий архив: 2006.04.09;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.014 c