Переключение на Главную Страницу Страницы: 1 [2] 3  ОтправитьПечать
Очень популярная тема (более 25 ответов) Say "good bye" to CMyContextBase (число прочтений - 12973 )
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Say "good bye" to CMyContextBase
Ответ #15 - 09. Августа 2007 :: 05:41
Печать  
artbear писал(а) 09. Августа 2007 :: 05:37:
А неопределенное количество параметров, как я понял, не поддерживается?

Нет.

Если очень хочется, то можно допилить до возможности создавать методы принимающие такие же параметры, что  CallAsFunc, например. Вызовы таких методов можно транслировать напрямую в метод основного класса. Но все это шняга. Методы с неопределенным количеством параметров лучше в C++ вообще не использовать. Поэтому я такое вообще не стал реализовывать.
  
Наверх
 
IP записан
 
orefkov
1c++ developer
1c++ moderator
Отсутствует


I Love YaBB 2!

Сообщений: 896
Зарегистрирован: 20. Мая 2006
Re: Say "good bye" to CMyContextBase
Ответ #16 - 09. Августа 2007 :: 05:41
Печать  
artbear писал(а) 09. Августа 2007 :: 05:36:
orefkov писал(а) 09. Августа 2007 :: 05:11:
ЗЫ. Сам то я давно уже CMyContextBase не юзаю, не нравится мне уже свое детище.

А что юзаешь вместо? Можешь дать пощупать? Улыбка

http://openconf.1cpp.ru/vk/vkloader/vkloadersrc.zip
blloader.cpp
Поправка.
В http://openconf.1cpp.ru/vk/vkloader/vkloadersrc.zip старый вариант CContextImpl.
Ща юзаю такой:
  

contextimpl.zip ( 10 KB | Загрузки )
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Say "good bye" to CMyContextBase
Ответ #17 - 09. Августа 2007 :: 06:58
Печать  
orefkov писал(а) 09. Августа 2007 :: 05:41:
В http://openconf.1cpp.ru/vk/vkloader/vkloadersrc.zip старый вариант CContextImpl.
Ща юзаю такой:

В МС ВС 6 будет работать? или из-за ограничений по шаблонам не пройдет?
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
orefkov
1c++ developer
1c++ moderator
Отсутствует


I Love YaBB 2!

Сообщений: 896
Зарегистрирован: 20. Мая 2006
Re: Say "good bye" to CMyContextBase
Ответ #18 - 09. Августа 2007 :: 07:29
Печать  
artbear писал(а) 09. Августа 2007 :: 06:58:
В МС ВС 6 будет работать? или из-за ограничений по шаблонам не пройдет?

Именно для работы в 6ке многое там так запутанно Улыбка
  
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Say "good bye" to CMyContextBase
Ответ #19 - 09. Августа 2007 :: 07:32
Печать  
orefkov писал(а) 09. Августа 2007 :: 07:29:
Именно для работы в 6ке многое там так запутанно Улыбка

И зря Улыбка Нечего использовать всякую дрянь (VC6) и тогда ничего не надо будет запутывать.
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Say "good bye" to CMyContextBase
Ответ #20 - 09. Августа 2007 :: 08:40
Печать  
Uzhast писал(а) 09. Августа 2007 :: 04:21:
К сожалению, она оказалась дефектная. Из-за нее компилятор заглючил и ограничение на 30 дней перестало работать.

Ы, валяюсь паццталом  Смех

orefkov писал(а) 09. Августа 2007 :: 05:41:
ЗЫ. Сам то я давно уже CMyContextBase не юзаю, не нравится мне уже свое детище.
Ща юзаю такой:

А можно вкратце пояснить:
- как определять синонимы (регистрировать разные названия, вызывающие один и тот же метод)?
- как реализовать динамические свойства (количество и набор которых задается в рантайме)?

+
синонимы проще всего зарегистрировать как обычные методы - переходники на основной метод
динамические свойства как обычно реализуются через реализацию виртуальных функций %prop%
правильно я понимаю?
  

De quelle planète es-tu?
Наверх
 
IP записан
 
orefkov
1c++ developer
1c++ moderator
Отсутствует


I Love YaBB 2!

Сообщений: 896
Зарегистрирован: 20. Мая 2006
Re: Say "good bye" to CMyContextBase
Ответ #21 - 09. Августа 2007 :: 09:04
Печать  
Uzhast писал(а) 09. Августа 2007 :: 07:32:
orefkov писал(а) 09. Августа 2007 :: 07:29:
Именно для работы в 6ке многое там так запутанно Улыбка

И зря Улыбка Нечего использовать всякую дрянь (VC6) и тогда ничего не надо будет запутывать.

Меня тут волнует совместимость с версией MFC, используемой 1С.
То бишь если я интегрирую интелловский компилер в 6ку, то все будет пучком?
А в 7ую студию? Надо будет шаманить с MFC, подсовывая ее из 6ки?
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Say "good bye" to CMyContextBase
Ответ #22 - 09. Августа 2007 :: 09:35
Печать  
orefkov писал(а) 09. Августа 2007 :: 09:04:
Меня тут волнует совместимость с версией MFC, используемой 1С.
То бишь если я интегрирую интелловский компилер в 6ку, то все будет пучком?

да, почти сразу

Цитата:
А в 7ую студию? Надо будет шаманить с MFC, подсовывая ее из 6ки?

а то как же, и в 8ую тоже
интересно, что Ushast'у это удалось

Цитата:
Чтобы обеспечить совместимость с 1С в проекте используются старые библиотеки и заголовочные файлы – от Visual Studio 6. Для нормальной сборки проекта необходимо удалить в настройках все ссылки на библиотеки и заголовки 2005-й Студии и прописать вместо них ссылки на библиотеки и заголовки 6-й студии.

Я в свое время такой же финт ушам делал с родным 2005 компилятором, это было весьма забавно.

+
Да, но в итоге я не стал перелезать на vs2005, ибо какой смысл в 2005+интел+заголовки от vc6, если есть vc6+интел+wndtabs+viassist.
Те же яйтса, толко в профил.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Say "good bye" to CMyContextBase
Ответ #23 - 09. Августа 2007 :: 09:44
Печать  
orefkov

Саш, и я чето не понял
Код
Выбрать все
struct variable_arguments
{
	static int GetNParams(DWORD dwMethod, const DWORD& dwCallParams)
	{
		if(dwMethod<T::endmeths::val)
			return _GetNParams(dwMethod, dwCallParams, (T::endmeths::prev*)NULL);
		return -1;
	}
	template<typename M>
	static int _GetNParams(DWORD dwMethod, const DWORD& dwCallParams, M*)
	{
		if(dwMethod==M::val)
		{
			if(0==(M::nParam >> 16))
				return M::nParam;
			else if (dwCallParams== -1)
				return M::nParam & 0xFFFF;
			return dwCallParams > (M::nParam & 0xFFFF) ? dwCallParams : (M::nParam & 0xFFFF);
		}
		return _GetNParams(dwMethod, dwCallParams, (M::prev*)NULL);
	}
	template<>static int _GetNParams<first_def>(DWORD, const DWORD&, first_def*){return -1;}
};
 


Здесь (и не только) что, приходится в рантайме бегать по всему списку или я не так понял?
  

De quelle planète es-tu?
Наверх
 
IP записан
 
orefkov
1c++ developer
1c++ moderator
Отсутствует


I Love YaBB 2!

Сообщений: 896
Зарегистрирован: 20. Мая 2006
Re: Say "good bye" to CMyContextBase
Ответ #24 - 09. Августа 2007 :: 10:05
Печать  
kms писал(а) 09. Августа 2007 :: 09:44:
orefkov

Саш, и я чето не понял
Здесь (и не только) что, приходится в рантайме бегать по всему списку или я не так понял?

В релизе это компилится не так страшно, как выглядит. Вся конструкция разворачивается в нечто вроде case.
Плюс за счет того, что вызов метода идет не через хранящийся где-то указатель на метод, а напрямую, то компилятор сразу видит, что происходит, и может нехило оптимизировать. Рекомендую налабать пару простых контекстов, и посмотреть, во что это компилится в релизе.
Например, если в контексте только одни процедуры, то HasRetVal скомпилится сразу в "return FALSE", без каких либо проверок по номеру метода, и тп.
  
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Say "good bye" to CMyContextBase
Ответ #25 - 09. Августа 2007 :: 10:11
Печать  
kms писал(а) 09. Августа 2007 :: 09:35:
Да, но в итоге я не стал перелезать на vs2005, ибо какой смысл в 2005+интел+заголовки от vc6, если есть vc6+интел+wndtabs+viassist.
Те же яйтса, толко в профил.

Смысл в нормальной поддержке namespace'ов - они наконец-то нормально поддерживаются в ClassView Улыбка Офигенно удобно. ClassView вообще продвинутей стал (что не удивительно). Плюс более удобный отладчик. Assist также может интегрироваться и в VS2005 (возможности рефакторинга рулят Улыбка). Также в VS2005 доступно больше опций для компилятора (они и в VS6 доступны, но через командную строку). Также гораздо более умный Intellisense, но его ум компенсируется тормозами и постоянными сбоями (просто отрубается и ничего не показывает). VS2005 вообще сильно тормозная штука.

Я на VS2005 перешел, в основном, из-за того, что в VS6 начал глючить билд - меняешь какой-нибудь заголовок, а при сборке перекомпилируются не все зависимые файлы. В VS2005 такое тоже бывает, но сильно реже и с этим можно бороться некоторыми шаманскими плясками.
  
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Say "good bye" to CMyContextBase
Ответ #26 - 10. Августа 2007 :: 03:53
Печать  
orefkov писал(а) 09. Августа 2007 :: 05:27:
Пара замечаний
в Utils1s.Context.CContextImpl ::GetParamDefValue параметр pDefValue может приходить NULL.
Это когда объект этого контекста назначен контекстом для CBLModule, и выполняется его компиляция, и компилятор просто проверяет, можно ли опускать этот параметр.

Это исправил, спасибо. (В репозитории)

orefkov писал(а) 09. Августа 2007 :: 05:27:
И Michele::Context::TypeTraits<CPoint>::FromCValue,
dynamic_cast<CContext<Michele::Context::CPoint> *> (Value1s.GetContext ())
Если контекстом придет объект, реализованный в дллке, собранной  без RTTI, то упадет все нахрен.

Вот и хорошо Улыбка Ибо пусть личности, собирающие DLL без RTTI, не вставляют свои поганые DLL в 1С Улыбка

ИМХО, смешивать модули с поддержкой и без поддержки RTTI очень плохо. Особенно, когда между модулями происходит взаимодействие через классы с виртуальными функциями Улыбка. К тому же отключение RTTI не дает никаких преимуществ, зато создает потенциальные проблемы на ровном месте Улыбка
  
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Say "good bye" to CMyContextBase
Ответ #27 - 07. Октября 2007 :: 08:38
Печать  
Просьба к Uzhast
"Michele Demo.ert" (находится в том же архиве, что и Michele.dll). - нету Печаль, видимо  забыл должить в последний раз, выложи отдельно пожалуйста. Если не трудно Улыбка
  
Наверх
ICQ  
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Say "good bye" to CMyContextBase
Ответ #28 - 07. Октября 2007 :: 08:44
Печать  
Nick писал(а) 07. Октября 2007 :: 08:38:
Просьба к Uzhast
"Michele Demo.ert" (находится в том же архиве, что и Michele.dll). - нету Печаль, видимо  забыл должить в последний раз, выложи отдельно пожалуйста. Если не трудно Улыбка

Спасибо за сообщение! Улыбка Обновил. Блин, как это я забыл ert-шку положить... Такую демку симпатичную сделал... Улыбка
  
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Say "good bye" to CMyContextBase
Ответ #29 - 07. Октября 2007 :: 09:49
Печать  
Uzhast писал(а) 07. Октября 2007 :: 08:44:
Nick писал(а) 07. Октября 2007 :: 08:38:
Просьба к Uzhast
"Michele Demo.ert" (находится в том же архиве, что и Michele.dll). - нету Печаль, видимо  забыл должить в последний раз, выложи отдельно пожалуйста. Если не трудно Улыбка

Спасибо за сообщение! Улыбка Обновил. Блин, как это я забыл ert-шку положить... Такую демку симпатичную сделал... Улыбка

Заценил, сам рисовал? Улыбка
Посмотрел на демку изнутри - у тебя видимо хорошее пространственное мышление Улыбка
  
Наверх
ICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1 [2] 3 
ОтправитьПечать