![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
тип Variant
XAU © (2002-03-28 18:01:00)Есть процедура, которая принимает параметр ( var x: Variant ).
Пытаюсь передать ей y[ i ], где y: Variant и при этом содержит массив из Variant.
Компилятор не пускает - говорит, что константу нельзя. Где ж здесь константа? Может, это заморочки типа Variant, и надо по-хитрому как-то?
Впрочем, и простое присваивание
y[ i ] := 1
вызывает сообщение, что слева стоит lvalue. Как я понял, это из той же серии.
Что делать?
XAU (2002-03-29 15:38:00) [1]Просто вложенность таких вариантных массивов достаточно большая и городить столько промежуточных переменных жутко не хочется :((
XAU (2002-03-29 15:34:00) [2]Спасибо, конечно.
Но и ежу понятно, что через промежуточную переменную можно. Я так и делал, да вот решил "попроще" :))
Насчет "кривости идеи" согласен, но она же не на пустом месте возникла. OLE через них работает.
Может, кто-то все-таки знает, как ее обмануть?
PVOzerski (2002-03-29 13:08:00) [3]:^(
Похоже, что тут заморочки, связанные с особенностями типа Variant.
Обойти проблему-то я, кажется, обошёл, но лишний раз убедился в "кривости" самой идеи
variant.
var aItem:variant;
....
SetArraySize( aDst, nRec );
SetArraySize( aItem, 2 );
aItem[1]:=-1;
aitem[2]:=-1;
aDst[ nRec ]:=aItem;
XAU (2002-03-29 11:59:00) [4]var aDst: Variant;
PVOzerski (2002-03-29 11:51:00) [5]А каково объявление aDst????
XAU (2002-03-29 11:34:00) [6]Ок. вот кусок
procedure SetArraySize( var aArr: Variant; nSize: Integer );
begin
if( VarIsArray( aArr ) ) then
VarArrayRedim( aArr, nSize )
else
aArr := VarArrayCreate( [ 1, nSize ], varVariant );
end;
...
SetArraySize( aDst, nRec );
SetArraySize( aDst[ nRec ], 2 );
aDst[ nRec ][ 1 ] := -1;
aDst[ nRec ][ 2 ] := -1;
McSimm (2002-03-28 18:50:00) [7]Имеет значение.
Если ты описал в программе константный массив, то компилятор тебе это и сообщает.
Неужели так трудно код создания массива привести?
Sava (2002-03-28 18:49:00) [8]Код давай, у меня все без проблем проходит.
XAU (2002-03-28 18:47:00) [9]это не имеет значения, поскольку ругается КОМПИЛЯТОР, а не обработчик run-time ошибок - до выполнения дело не доходит.
Sava (2002-03-28 18:19:00) [10]А ты как этот массив y : vаriant как создавал?
И создавал вообще?