Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "KOL";
Текущий архив: 2006.04.09;
Скачать: [xml.tar.bz2];

Вниз

Глюк компилятора   Найти похожие ветки 

 
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 вся ветка

Форум: "KOL";
Текущий архив: 2006.04.09;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.02 c
2-1143033318
sanich
2006-03-22 16:15
2006.04.09
Как динамически формировать имя переменной?


4-1137893606
Microsom
2006-01-22 04:33
2006.04.09
Имя пользователя, из под аккаунта которого запущена программа.


2-1143066395
Andy BitOff
2006-03-23 01:26
2006.04.09
Длина массива в байтах.


15-1142402854
Думкин
2006-03-15 09:07
2006.04.09
Субъективизм и уверенность в абсолюте. И в программировании.


1-1141683020
Pavia
2006-03-07 01:10
2006.04.09
CRC16/32





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский