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

Вниз

А никто не пробовал писать свой "Variant" ?   Найти похожие ветки 

 
афвуд ©   (2004-06-07 16:55) [0]

Просто столкнулся я кажись с этим. Вот и хочется узнать где лежат грабли на этом пути и т.д.

На вопрос "А чем стандартный не устраивает?" сразу отвечу - парой глюков и хочу уйти от VCL(пишу на C++Builder).


 
Digitman ©   (2004-06-07 16:58) [1]


> парой глюков


эт каких же ?


> хочу уйти от VCL


уйти можно откуда угодно и куда угодно. но при этом ты лишаешься мощной поддержи компилятора в части работы со стандартными вариантными типами ... будешь "ручками" аллокировать/реаллокировать/деаллокировать данные своих типов,ь чеша потом репу, где же потерялась память ..


 
Anatoly Podgoretsky ©   (2004-06-07 16:59) [2]

Ты бы не задавал этот вопрос если бы мог, Борланду за много лет не удалось избежать проблем с этим типом, при том у них поддержка на уровне complirer magic


 
афвуд ©   (2004-06-07 17:09) [3]

2 Anatoly Podgoretsky:
Мне придётся его писать. Поэтому спрашиваю.

2 Digitman:
Ну не глюки..
Например если в C++Buildere Variant"у присваиваешь какой-нить "void *" то эта гадина превращает его в bool и получаем потерю информации. Приходится сначала void * -> int а потом int уже -> Variant . Неудобно.
Да и с датами у него один есть плохой закавыка. Но это уже отдельная проблема.


> но при этом ты лишаешься мощной поддержи компилятора в части
> работы со стандартными вариантными типами ... будешь "ручками"
> аллокировать/реаллокировать/деаллокировать данные своих
> типов,ь чеша потом репу, где же потерялась память ..

:) Этого я не боюсь.


 
афвуд ©   (2004-06-07 17:11) [4]

Да и говорю: от VCL очень хочется уйти. Возможен в будущем уход от Виндовой платформы.


 
Anatoly Podgoretsky ©   (2004-06-07 17:35) [5]

Твоя мечта уже исполнена, это не VCL а RTL
Вторая мечта также исполнена, варианты работают и в Линуксе


 
Григорьев Антон   (2004-06-07 17:43) [6]

А от API тоже хочется уйти? А то там есть VARIANTARG, VariantClear и т.п.


 
Тимохов ©   (2004-06-07 17:50) [7]


> Григорьев Антон   (07.06.04 17:43) [6]

он же сказал - может и от виндовой платформы тоже хочется уйти, о каком api вы говорите:)))


 
Gero ©   (2004-06-07 18:01) [8]

Да и вобще лучше от компьютеров уйти. Злые они.


 
афвуд ©   (2004-06-07 19:23) [9]

2 Anatoly Podgoretsky:
У меня другие мечты. А это - работа.

Ну похоже никто помочь не хочет(or не может). Лишь бы остроумием блеснуть :) .
Ну ладна. Пойду в однюху бороться с несчатьями жизни :) .


> Ты бы не задавал этот вопрос если бы мог, Борланду за много
> лет не удалось избежать проблем с этим типом, при том у
> них поддержка на уровне complirer magic

Да.. не хочу я переписывать ВЕСЬ variant. Просто у меня Уже есть скриптогонялка. Там всё работает на Variant"e . Выявились неудобства некоторые вышеописанные. Надо что-то замутить по этому поводу. Вот и делаю. По настоящему мне нужен Variant без OLE, Без всяких фичей не нужных(может даже без поддержки массивов), а чтобы Тип в тип преобразовать умела и складывать то, что складывает и умножать там. C++ это позволяет своими operator+ и т.д.


 
Тимохов ©   (2004-06-07 19:31) [10]


> афвуд ©   (07.06.04 19:23) [9]

вроде и в дельфи (сам пока не делал) начиная с какой-то версии (в 6 есть) есть TCustomVariantType.
посмотри - может это то, что нужнож


 
афвуд ©   (2004-06-07 19:49) [11]

Смотрю(он и в Билдере есть). Вникаю. Но кажись не подойдёт. Чисто паскалёвая фича. А у нас Си. Хотя спасибо за совет.


> Вторая мечта также исполнена, варианты работают и в Линуксе

эээ. Как? Это тот Variant, который в CLX? Ну так я подозреваю у него те же недостатки.


 
Подкрадуха ©   (2004-06-07 22:56) [12]

TVarRec, вроде...
Чего там переписывать?
А, вообще-то 80 байт под переменную - это многовато - тормозить будет, imho.


 
Mim1 ©   (2004-06-08 01:55) [13]


> эээ. Как? Это тот Variant, который в CLX? Ну так я подозреваю
> у него те же недостатки.


Вам же свазали, variant это не vcl а rtl. Соответственно variant это и не clx а rtl. :)


 
KSergey ©   (2004-06-08 07:09) [14]

чтобы Тип в тип преобразовать умела и складывать то, что складывает и умножать там. C++ это позволяет своими operator+ и т.д.

А _variant_t - не устраивает? Я правда не знаю, реалиован ли он в билдере, в MS VC++ - есть, работает.
Не знаю, перекрыты ли там сложения/умножения, но преобразования - точно.


 
афвуд ©   (2004-06-08 13:39) [15]


> А, вообще-то 80 байт под переменную - это многовато - тормозить
> будет, imho.

Обычно у меня такое правило действует - чтобы ускорить прогу нужно затратить больше памяти. ТАк что наверно ты не очень прав. Ведь есть такие стили программинга где за счёт более высокой затраты памяти достигается офигенная скорость.


> А _variant_t - не устраивает? Я правда не знаю, реалиован
> ли он в билдере, в MS VC++ - есть, работает.

Нет его в Билдере.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.06.20;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.03 c
3-1085643217
Kraw
2004-05-27 11:33
2004.06.20
Программирование TDBGrid


8-1081227114
freeek
2004-04-06 08:51
2004.06.20
Нарисовать на картинке


14-1086111375
SergP
2004-06-01 21:36
2004.06.20
Какой-то нехороший человек шлет мыла (наверное с вирями)


1-1086075417
V-Isa
2004-06-01 11:36
2004.06.20
Ребята, подскажите с чего начать.


6-1083075208
2963
2004-04-27 18:13
2004.06.20
IP





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский