Переключение на Главную Страницу Страницы: 1 2 [3] 4 5 ... 11 ОтправитьПечать
Очень популярная тема (более 25 ответов) Динамич. создание классов и подкл. файл. реализац. (число прочтений - 52939 )
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #30 - 30. Января 2007 :: 14:41
Печать  
Цитата:
Волшебный комментарий "//#" творит чудеса. Улыбка
Описание можно поместить в файл реализации и включить его [файл реализации] в дефслс c помощью директивы include.

А ведь этот вариант у нас тестами в конфе тестирования 1С++ не охвачен Печаль
Как-то я его упустил, хотя знаю, что он есть, но не пользуюсь.
Нужно срочно исправляться Улыбка

ЗЫ глядишь, еще какой баг и найду Улыбка
  

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


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Динамич. создание классов и подкл. файл. реали
Ответ #31 - 30. Января 2007 :: 14:48
Печать  
artbear писал(а) 30. Января 2007 :: 14:41:
Цитата:
Волшебный комментарий "//#" творит чудеса. Улыбка
Описание можно поместить в файл реализации и включить его [файл реализации] в дефслс c помощью директивы include.

А ведь этот вариант у нас тестами в конфе тестирования 1С++ не охвачен Печаль
Как-то я его упустил, хотя знаю, что он есть, но не пользуюсь.
Нужно срочно исправляться Улыбка

ЗЫ глядишь, еще какой баг и найду Улыбка

Да, отличная идея.
И надо еще между делом посмотреть, есть ли у нас тесты на неопределенное число параметров.
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #32 - 30. Января 2007 :: 14:51
Печать  
kms писал(а) 30. Января 2007 :: 14:48:
И надо еще между делом посмотреть, есть ли у нас тесты на неопределенное число параметров.

Такие тесты есть точно.
Хотя 30 параметров, конечно, не проверяются Улыбка
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #33 - 31. Января 2007 :: 05:16
Печать  
Цитата:
Волшебный комментарий "//#" творит чудеса. Улыбка
Описание можно поместить в файл реализации и включить его [файл реализации] в дефслс c помощью директивы include.

Я протестил такой вариант и увидел, что или он не работает, или я туплю.
В прм-файле пишу
Код
Выбрать все
//#include КлассОписанныйВФайлеРеализацииКласса.txt
 


Дале пробовал два варианта внутри файла реализации

1
Код
Выбрать все
class КлассОписанныйВФайлеРеализацииКласса = КлассОписанныйВФайлеРеализацииКласса.txt
{}
Перем Атрибут;
 


На этапе загрузки 1С++ все нормально. Если зайти в Сервис-Параметры-Настройки1С++, то этот класс виден в списке доступных классов.
НО если попытаться создать объект класса, будет выдаваться синтакс-ошибка Печаль

2
Код
Выбрать все
//class КлассОписанныйВФайлеРеализацииКласса = КлассОписанныйВФайлеРеализацииКласса.txt
//{}
Перем Атрибут;
 


В этом случае класса вообще никак не видно, и создать объект также нельзя.

Где я ошибся?

ЗЫ также изучал исходники. ИМХО специально никакой обработки для поддержки данной фичи не заметил Печаль
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #34 - 31. Января 2007 :: 05:18
Печать  
artbear писал(а) 31. Января 2007 :: 05:16:
2
Код
Выбрать все
//class КлассОписанныйВФайлеРеализацииКласса = КлассОписанныйВФайлеРеализацииКласса.txt
//{}
//Перем Атрибут;
 



Поправил вариант 2 - убрал лишний коммент
Код
Выбрать все
//class КлассОписанныйВФайлеРеализацииКласса = КлассОписанныйВФайлеРеализацииКласса.txt
//{}
Перем Атрибут;
 


  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #35 - 31. Января 2007 :: 05:33
Печать  
artbear писал(а) 31. Января 2007 :: 05:16:
Цитата:
Волшебный комментарий "//#" творит чудеса. Улыбка
Описание можно поместить в файл реализации и включить его [файл реализации] в дефслс c помощью директивы include.

Я протестил такой вариант и увидел, что или он не работает, или я туплю.

Я туплю от отсутствия доки Улыбка

Правильно работает такой вариант
Код
Выбрать все
//#class КлассОписанныйВФайлеРеализацииКласса = КлассОписанныйВФайлеРеализацииКласса.txt
//#{}
Перем Атрибут;
 



Вечером залью тесты для него.
  

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: Динамич. создание классов и подкл. файл. реали
Ответ #36 - 31. Января 2007 :: 07:37
Печать  
Давайте подумаем, из-за чего вообще возникла нужда в def-файлах.
А возникла она из-за того, что видимый из длл-экспорта интерфейс CBLModule7 не позволял ответить на вопросы:
1. Передается ли параметр по значению.
2. Указано ли значение по умолчанию для параметра.
3. Нет синтаксиса для указания в методе модуля неявного количества параметров.
4. Нет возможности указания типа параметров (хотя я этим не пользуюсь, для меня это спорный момент)

Если удастся решить эти вопросы в рамках скомпилированного CBLModule7, то и надобность в def-файлах отпадет.

По первому пункту может быть АЛьФ что-нить подскажет? Не может быть, что он это не нарыл.
По второму - опять же вопрос к Альфу. Для задания значений по умолчанию в виде выражений можно использовать синтаксис что-то типа
а="==ТекущаяДата()".
По третьему пункту - можно заюзать параметр с предопределенным именем, например "џџџ";
Ну и четвертый пункт - если решить второй, то и это достижимо.
В результате получится что-то типа:
Код
Выбрать все
Процедура Тест(Знач Парам1 = ":Строка:==ИмяПользователя()", парам2=":Число", џџџ) Экспорт
 


PS: "џ" набирается как ALT + 0159 на цифровой клаве.
PPS: В качестве символов идентификаторов 1С оказывается допускает использование и таких символов:

0128=Ђ
0129=Ѓ
0131=ѓ
0138=Љ
0140=Њ
0141=Ќ
0142=Ћ
0143=Џ
0144=ђ
0154=љ
0156=њ
0157=ќ
0158=ћ
0159=џ
0161=Ў
0162=ў
0163=Ј
0165=Ґ
0170=Є
0175=Ї
0178=І
0179=і
0180=ґ
0181=µ
0186=є
0188=ј
0189=Ѕ
0190=ѕ
0191=ї

То есть вполне допустимо написать
µ = 1;
Сообщить(µ);
Правда текущий телепат об этом не знает Печаль
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Динамич. создание классов и подкл. файл. реали
Ответ #37 - 31. Января 2007 :: 08:12
Печать  
А почему просто не перенести def файл в модуль и не парсить его оттуда с последующей стандартной обработкой до момента компиляции.
Само наличие дополнительных определений не напрягает, напрягает разброс на 2 файла и способ загрузки.
  

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


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Динамич. создание классов и подкл. файл. реали
Ответ #38 - 31. Января 2007 :: 09:03
Печать  
kms писал(а) 31. Января 2007 :: 08:12:
Само наличие дополнительных определений не напрягает, напрягает разброс на 2 файла и способ загрузки.

Вот. Поддерживаю.

Кроме прочего это позволит на ходу менять описание методов и их параметров.

Только здесь есть один момент. Если описание наследования также хранить в модуле класса, то при повторной компиляции иерархия может измениться и для уже созданных объектов. Либо надо для каждого объекта хранить ссылку на его иерархию. Вообщем, ерунда получается.
  
Наверх
 
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Динамич. создание классов и подкл. файл. реали
Ответ #39 - 31. Января 2007 :: 09:10
Печать  
Цитата:
sedmin
Цитата:
А в дефклс надо только ссылку на класс указывать.

Цитата:
include в defcls не нужен.

По моему, это взаимоисключающие требования.
Все-таки, include нужен или нет?

Вот до меня дошло, чем отличается include от ссылки. Чуствовал, что подвох есть, но не знал, где он.  Улыбка

Грубо так: Если сделать через include, то кроме прочих заморочек, defcls компилируется один раз при загрузке 1С++. А если через ссылку - то при создании объекта описание компилируется заново.

А заморочки еще вот какие. Есть проблемы с диагностикой по ошибкам defcls.prm. Например, толком не узнать, в какой строке ошибка случилась. Вообщем, если сделать через include, то на первых этапах, пока все это вычистится, мало не покажется.

Хотя, конечно, зная как там все написано, и в простом варианте мало не покажется.  Улыбка
  
Наверх
 
IP записан
 
Палыч
1c++ power user
Отсутствует


I Love 1Cv8!

Сообщений: 217
Зарегистрирован: 19. Мая 2006
Re: Динамич. создание классов и подкл. файл. реали
Ответ #40 - 31. Января 2007 :: 09:46
Печать  
orefkov
Тоже считаю, что не стоит заморачиваться отказом от заголовка класса.

sedmin
Ничего не понимаю из того, что ты пишешь в этой ветке. Дай время своим мыслям созреть. Улыбка
  
Наверх
ICQ  
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #41 - 31. Января 2007 :: 13:04
Печать  
Цитата:
sedmin
Ничего не понимаю из того, что ты пишешь в этой ветке. Дай время своим мыслям созреть. Улыбка

+1
Чем дальше от начала ветки - тем непонятнее.
  
Наверх
www  
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #42 - 31. Января 2007 :: 14:25
Печать  
orefkov писал(а) 31. Января 2007 :: 07:37:
1. Передается ли параметр по значению.

Легко.

orefkov писал(а) 31. Января 2007 :: 07:37:
2. Указано ли значение по умолчанию для параметра.

Легко.
  

FormEx developer
Наверх
www  
IP записан
 
KonstSV
Junior Member
**
Отсутствует



Сообщений: 39
Местоположение: Москва
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #43 - 01. Февраля 2007 :: 08:54
Печать  
Подводя промежуточный итог, хочу предложить следующий вариант:

1. При загрузке компоненты классы автоматически не загружаются.

2. У объекта "MetaInfoClasses" должны быть две процедуры с параметром или несколько разных процедур для
    загрузки определений и реализаций классов.

   Например:
       ПодключитьОпределениеКлассов(Число ТипПодключения, Строка ОпределениеКласса)
или
       ПодключитьОпределениеКлассовИзФайла(Строка ПутьКФайлу)
       ПодключитьОпределениеКлассовИзMD(Строка ИмяОбработки)
       ПодключитьОпределениеКлассовИзСтроки(Строка ОпределениеКласса)

Должна быть возможность загружать определения и реализации классов
- из внешних файлов (текстовых (расширения любые) и обработок 1С (ert)),
- из обработок, находящихся внутри конфигурации,
- из строк,
- может быть ещё откуда-нибудь (объект "Текст", объект "BinaryData" и т.п.)

3. Порядок подключения произвольный, за исключением того, что определение класса идет до его реализации,
    и определения предков должны быть уже подключены.

4. Должна быть возможность отключать классы по одному, группой или все вместе.

P.S.

Директива #include, естественно, сохраняется
  
Наверх
 
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Динамич. создание классов и подкл. файл. реали
Ответ #44 - 01. Февраля 2007 :: 10:28
Печать  
KonstSV писал(а) 01. Февраля 2007 :: 08:54:
4. Должна быть возможность отключать классы по одному, группой или все вместе.

При отключении класса кто будет проверять, что таких объектов нету?
И вообще, каков смысл этого?
  
Наверх
www  
IP записан
 
Переключение на Главную Страницу Страницы: 1 2 [3] 4 5 ... 11
ОтправитьПечать