Форум: "Основная";
Текущий архив: 2010.03.21;
Скачать: [xml.tar.bz2];
ВнизОтчего ошибка при сравнении Variant? Найти похожие ветки
← →
Cobalt © (2009-04-19 21:02) [0]Есть переменная
FWB : Variant;
В конструкторе класса инициализирую её Unassigned
В процедуре перед тем, как обратиться к ней, делаю проверку:if FWB = Unassigned then
Result := Unassigned
И это сравнение вызываетraise EVariantInvalidOpError.Create(SInvalidVarOp);
Получается это оттого, что сравнение идет с типом varDispatch.
Возникает вопрос - каковы причины такого поведения?
Почему не возвращать false?
P.S. BDS2007
← →
ТД (2009-04-19 21:12) [1]
> Result := Unassigned
а подумать после посмотреть?
← →
Cobalt © (2009-04-19 21:20) [2]Для особо внимательных:
Я прошелся по системным модулям до самого места вызова EVariantInvalidOpError, и обнаружил, что на любую операцию сравнивания с varDispatch вызывается эксепшн.
Вопрос-то мой об аргументах на такой запрет.
← →
int64 (2009-04-20 09:40) [3]Вообще-то, вместо FWB = Unassigned реальные пацаны пишут: VarIsClear(FWB).
Впрочем как и вместо FWB = null -> VarIsNull
← →
Плохиш © (2009-04-20 10:43) [4]
> Cobalt © (19.04.09 21:20) [2]
>
> Для особо внимательных:
> Я прошелся по системным модулям до самого места вызова EVariantInvalidOpError
А справку не пробовал по используемым функциям почитать?
Хотя, чегой-то я, реальнокрютыеперцы справок/книжек не читают...
← →
clickmaker © (2009-04-20 11:29) [5]> Почему не возвращать false?
VarIsEmpty()
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2010.03.21;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.004 c