Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Горячая тема (более 10 ответов) ФабрикаОбъектов / Шрифт (число прочтений - 4664 )
kms
1c++ power user
1c++ moderator
Отсутствует


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
ФабрикаОбъектов / Шрифт
26. Марта 2008 :: 19:19
Печать  
artbear

Вот смотри, как в Фабрике сейчас стало:
Код
Выбрать все
int CObjectFactory::GetParamDefValue(int nMethIndex, int nParamIndex, CValue * pValue)const
{
    pValue->Reset();
	pValue->type = -1;
    return 1;
}
 


Раньше установки типа в -1 не было.

А между тем, Шрифт по-прежнему, ожидает тип 0 в случае дефолтных параметров.
Вы когда это решили поменять, про Шрифт не вспомнили, что ли?

А для остальных объектов, создаваемых через фабрику, - там как - нет этой проблемы или тоже есть?

P.S.
И вообще-то присваивание беззнаковой переменной отрицательного значения - тоже не здорово.

http://www.1cpp.ru/bugs/show_bug.cgi?id=3690
  

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


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: ФабрикаОбъектов / Шрифт
Ответ #1 - 26. Марта 2008 :: 19:25
Печать  
artbear

Только не пойми меня неправильно Улыбка

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

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ФабрикаОбъектов / Шрифт
Ответ #2 - 27. Марта 2008 :: 06:48
Печать  
Подумаю, сам вчера увидел это предупреждение.
Только на самом деле мне помнится, что так написано во внутреннем коде 1С Улыбка
Т.е. тип type на самом деле не WORD, а все-таки signed short Улыбка
Лады, еще подумаю сегодня Улыбка

ЗЫ ОФФ ВидДокумента, наверное, все-таки ты сделай. я намного больше, чем ты, не в теме. Ты хоть это можешь на своих базах проверить Улыбка
  

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: ФабрикаОбъектов / Шрифт
Ответ #3 - 27. Марта 2008 :: 09:39
Печать  
Насчет pValue->type = -1; не знаю, кто вносил. Я вроде бы точно не вносил. Причины внесения также непонятны.
Кстати
if((*ppValueForCallMethod)->type == -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: ФабрикаОбъектов / Шрифт
Ответ #4 - 27. Марта 2008 :: 09:52
Печать  
artbear писал(а) 27. Марта 2008 :: 09:39:
Насчет pValue->type = -1; не знаю, кто вносил. Я вроде бы точно не вносил. Причины внесения также непонятны.

Вот хз, кто вносил. Я думал - ты. Улыбка
Кстати, мысль-то здравая, чтобы отличать незаданные атрибуты от просто пустых.

Но надо же при этом все классы было переработать, которые ожидали тип 0, а получили - тип -1.
Впрочем, что еще сейчас может создаваться через фабрику, кроме Шрифтов?

Цитата:
if((*ppValueForCallMethod)->type == -1)      // Значение по умолчанию
также вроде не мой код Печаль

Чей, интересно.
А где это, воообще?

Цитата:
Цитата:
[-] предварительно исправлена некорректная обработка дефолтных
параметров в классе Шрифт при создании с помощью фабрики
объектов

Про это исправление расскажи, как?

Да проверяю пока (при создании шрифта) оба типа, и 0 и -1 - считаются дефолтными.

Ну, все же надо будет определиться, должно быть только одно дефолтное значение, если мы не хотим усложнять себе жизнь.
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ФабрикаОбъектов / Шрифт
Ответ #5 - 27. Марта 2008 :: 09:56
Печать  
Фабрика::Новый еще Саша Орефков правил. Возможно, что и по шрифтам также он прошелся, но я не уверен Улыбка
Желательно от -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: ФабрикаОбъектов / Шрифт
Ответ #6 - 27. Марта 2008 :: 10:04
Печать  
artbear писал(а) 27. Марта 2008 :: 09:56:
Фабрика::Новый еще Саша Орефков правил. Возможно, что и по шрифтам также он прошелся, но я не уверен Улыбка
Желательно от -1 избавиться

В том-то и дело, что тот, кто это делал, про шрифты вообще не думал - забыл.

Да ну, Саня нормально бы сделал.
  

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


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: ФабрикаОбъектов / Шрифт
Ответ #7 - 27. Марта 2008 :: 10:07
Печать  
А вообще да, это вот здесь появилось:

Цитата:
----------------------------
Revision : 1.5
Date : 2006/12/26 13:43:35
Author : 'orefkov'
State : 'Exp'
Lines : +54 -44
Description :
Небольшие изменения в методе "Новый":
Исправлена работа с параметрами по умолчанию для не CComponentClass.
Запрещено передавать параметров больше, чем объявлено в методе-конструкторе.


Забыл, выходит, про шрифты.
  

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


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: ФабрикаОбъектов / Шрифт
Ответ #8 - 27. Марта 2008 :: 10:52
Печать  
artbear писал(а) 27. Марта 2008 :: 06:48:
Только на самом деле мне помнится, что так написано во внутреннем коде 1С Улыбка
Т.е. тип type на самом деле не WORD, а все-таки signed short Улыбка

Нет, беззнаковый.
Если интересно, можешь посмотреть реализацию

int CType::GetTypeCode(void)const

  

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


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: ФабрикаОбъектов / Шрифт
Ответ #9 - 27. Марта 2008 :: 11:48
Печать  
artbear писал(а) 27. Марта 2008 :: 09:56:
Желательно от -1 избавиться

Да нет, наоборот.
Необходимо оставить -1, чтобы была возможность отличать незаданные значения от явно заданных неопределенных.

В этом случае будет проблема только с параметрами, явно заданными как ПолучитьПустоеЗначение() - была где-то ветка.
Ну и хрен с ними.

P.S.
Исправлено, для icpp/3.0
Если будут изменения в фабрике (например, будешь что-то портировать) - этот момент должен остаться без изменений.
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ФабрикаОбъектов / Шрифт
Ответ #10 - 27. Марта 2008 :: 12:58
Печать  
kms писал(а) 27. Марта 2008 :: 11:48:
чтобы была возможность отличать незаданные значения от явно заданных неопределенных.

Что-то я не пойму, какая между ними разница и нафига это нужно.
Просвети.
  

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: ФабрикаОбъектов / Шрифт
Ответ #11 - 27. Марта 2008 :: 13:32
Печать  
artbear писал(а) 27. Марта 2008 :: 12:58:
kms писал(а) 27. Марта 2008 :: 11:48:
чтобы была возможность отличать незаданные значения от явно заданных неопределенных.

Что-то я не пойму, какая между ними разница и нафига это нужно.
Просвети.

Ну как какая разница - неопределенное, но заданное - это мое явное желание использовать это неопределенное значение при инициализации объекта.
Незаданное значение - это директива классу самому определить, какое значение использовать по умолчанию.

Эта методика уже используется - например, в ИТ при задании неопределенных границ фильтров.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать