Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.11;
Скачать: [xml.tar.bz2];




Вниз

тип Variant 


XAU   (2002-03-28 18:01) [0]

Есть процедура, которая принимает параметр ( var x: Variant ).
Пытаюсь передать ей y[ i ], где y: Variant и при этом содержит массив из Variant.
Компилятор не пускает - говорит, что константу нельзя. Где ж здесь константа? Может, это заморочки типа Variant, и надо по-хитрому как-то?
Впрочем, и простое присваивание
y[ i ] := 1
вызывает сообщение, что слева стоит lvalue. Как я понял, это из той же серии.
Что делать?



Sava   (2002-03-28 18:19) [1]

А ты как этот массив y : vаriant как создавал?
И создавал вообще?



XAU   (2002-03-28 18:47) [2]

это не имеет значения, поскольку ругается КОМПИЛЯТОР, а не обработчик run-time ошибок - до выполнения дело не доходит.



Sava   (2002-03-28 18:49) [3]

Код давай, у меня все без проблем проходит.



McSimm   (2002-03-28 18:50) [4]

Имеет значение.
Если ты описал в программе константный массив, то компилятор тебе это и сообщает.

Неужели так трудно код создания массива привести?



XAU   (2002-03-29 11:34) [5]

Ок. вот кусок

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;



PVOzerski   (2002-03-29 11:51) [6]

А каково объявление aDst????



XAU   (2002-03-29 11:59) [7]

var aDst: Variant;



PVOzerski   (2002-03-29 13:08) [8]

:^(
Похоже, что тут заморочки, связанные с особенностями типа Variant.
Обойти проблему-то я, кажется, обошёл, но лишний раз убедился в "кривости" самой идеи
variant.
var aItem:variant;

....
SetArraySize( aDst, nRec );
SetArraySize( aItem, 2 );
aItem[1]:=-1;
aitem[2]:=-1;
aDst[ nRec ]:=aItem;



XAU   (2002-03-29 15:34) [9]

Спасибо, конечно.
Но и ежу понятно, что через промежуточную переменную можно. Я так и делал, да вот решил "попроще" :))

Насчет "кривости идеи" согласен, но она же не на пустом месте возникла. OLE через них работает.

Может, кто-то все-таки знает, как ее обмануть?



XAU   (2002-03-29 15:38) [10]

Просто вложенность таких вариантных массивов достаточно большая и городить столько промежуточных переменных жутко не хочется :((




Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.11;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.73 MB
Время: 0.026 c
14-32948          Pete                  2002-03-04 09:33  2002.04.11  
New Component...


1-32799           Crime134              2002-03-31 22:21  2002.04.11  
Строки


1-32889           Вячеслав              2002-03-29 11:05  2002.04.11  
QTINTF.DLL-как от нее избавиться?


1-32845           mike.dld              2002-03-29 09:24  2002.04.11  
StringGrid


1-32741           snoup                 2002-03-29 23:25  2002.04.11  
А как создать свой лог-файл который бы вёл журнал(когда/восколько