Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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]

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



Страницы: 1 вся ветка

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

Наверх





Память: 0.46 MB
Время: 0.007 c
14-32971
Sks
2002-03-02 12:33
2002.04.11
Как программно найти настройку...


4-33007
Death
2002-02-09 23:19
2002.04.11
Помогите вызвать форму на передний план.


1-32719
Swinger
2002-03-26 23:22
2002.04.11
Формы


6-32910
Ruff-Fish
2001-12-28 09:47
2002.04.11
Как определить координатора локальной сети?


4-33024
Alexsyy
2002-02-08 16:58
2002.04.11
Пожалуйста помогите





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский