![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ВDS 2006 тоже не поддерживает custom variant byRef
oxffff © (2006-09-14 23:21:00)Я уже писал о том, что Delphi 7 не поддерживает custom variant by ref. Дисскуссия шла где в июне-июля. Уже в архивах.
Сейчас установил BDS 2006. Решил проверь, а как же там дела с этим. К сожалению все также.
Ну во первых естественно в вызове VarCopy->VarCopyDeep
И далее строчки
// otherwise try for custom
else if FindCustomVariantType(Source.VType, LSourceHandler) then
LSourceHandler.Copy(Dest, Source, False)
Во первых FindCustomVariantType не найдет custom variant.
И во вторых вызывается direct copy
Если вызвать VarCopyNoInd(a,b).
То все равно будет ошибка поскольку FindCustomVariantType не найдет helper класс .
Кто хочет убедиться пожалуйста код
var a,b:variant;
begin
//here some custom variant by ref
tvardata(a).VType:=273 or varByRef;
a:=b; exception is generated
VarCopyNoInd(a,b); exception is generated
QC молчит.
oxffff (2006-09-15 10:12:00) [41]Собственно сабж посвещен тому, чтобы указать,
что custom variant byRef не поддерживается нормальными средствами.
jack128 (2006-09-15 02:07:00) [42]проще написать свой record, перегрузив нужные операторы, чем с этими вариантами парится.
oxffff (2006-09-14 23:25:00) [43]Естественно приведенный код не требует helper класса. Поскольку до него дело не дойдет по причине FindCustomVariantType не работает с By ref.
Естественно поправить ее очень легко. Я уже писал об этом летом.