Форум программистов, компьютерный форум, киберфорум
HCL Notes: Программирование
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/109: Рейтинг темы: голосов - 109, средняя оценка - 5.00
 Аватар для T1000
0 / 0 / 0
Регистрация: 05.10.2011
Сообщений: 15

На стыке Variant и Array

02.06.2010, 12:54. Показов 20260. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток!


Code
1
2
3
4
5
    Dim TL(4)
 
For i=0 To 4
TL(i)=doc.GetItemValue("TL_"+Cstr(i+1))
Next
На выходе имеем примерно следующее:
TL(0)=["1162","1168","1172"]
TL(1)=["1262","138","12","1211","14"]
TL(2)=[""]
TL(3)=["22","777"]
TL(4)=["2212","774","714"]

Вопрос: как правильно написать обращение к любому из элементов?, так так запись t=TL(1)(2) не правильна.

P.S. Извините! Из-за спешки написал в "администрирование". модераторы, перенесите тему плз в "прогрпммирование"
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.06.2010, 12:54
Ответы с готовыми решениями:

VARIANT array в C#
C# windows form В подключенном в references модуле метод возвращает "VARIANT array of 17 VARIANTs" (в описании так). В студии...

Ошибка Record Array Of Variant
Здравствуйте уважаемые форумчане. Есть задание переписать процедуру, осуществляющую БПФ из С++ в Делфи. Но возникла проблема при...

Не выполняется процедура ("Variant of save array index out of bounds")
Ребят что то я затупил. Подскажите почему не выполняется процедура. Ниже код самой процедуры и текст ошибки при выполнении ее: ...

15
0 / 0 / 0
Регистрация: 04.11.2007
Сообщений: 3,019
02.06.2010, 12:58
t = doc.getitemvalues("TL_0")
print t(2)
0
 Аватар для T1000
0 / 0 / 0
Регистрация: 05.10.2011
Сообщений: 15
02.06.2010, 13:11
2ToxaRat
Я думаю что я Вас правильно понял, но мне нужно немного другое.
Есть обходной пример, схожий с вашим

Code
1
2
3
4
5
6
7
8
9
10
11
    dym value
Dim TL(4)
Dim res
 
For i=0 To 4
TL(i)=doc.GetItemValue("TL_"+Cstr(i+1))
Next
 
к примеру
res=TL(1)
value=res(2)
но нет ли более простой или альтернативной записи, а не "обходной маневр"?
0
0 / 0 / 0
Регистрация: 04.10.2007
Сообщений: 2,977
02.06.2010, 13:20
arrayVar(i, j)?
0
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
02.06.2010, 13:43
зачем создается массив?
есть хэши
и воще на понятна цель таких выкрутасов
0
 Аватар для T1000
0 / 0 / 0
Регистрация: 05.10.2011
Сообщений: 15
02.06.2010, 14:02
начальные данные выбираются из итемов, который изначально то содержат разное кол-во элементов, а потом еще проходит отсев лишних.
в следствие чего и получается такой перекос и столь специфичный формат хранения данных.

2Akupaka
я так понял речь про то, почему бы не создать ровный двумерный массив с данными? (из-за формата данных)
2Imile
поясните плз что за хэши и как ими можно воспользоваться для моего вопроса.
0
0 / 0 / 0
Регистрация: 15.03.2009
Сообщений: 615
02.06.2010, 14:19
Цитата Сообщение от T1000
но нет ли более простой или альтернативной записи, а не "обходной маневр"?
альтернативный вариант - обернуть в класс и создать методы доступа.

Code
1
2
3
4
5
6
7
8
9
10
class WrappedTL
Private tl As Variant
sub new( i_tl As Variant )
...
end sub
function getElement( i As integer, j As integer)
....
end function
....
End Class
проще это или нет чем ваш маневр - вопрос открытый.
0
 Аватар для T1000
0 / 0 / 0
Регистрация: 05.10.2011
Сообщений: 15
02.06.2010, 14:24
2turumbay
а это мысль!!!
хотя можно было бы сделать и тип данных определяемый пользователем, и что-то среднее вышло бы. хотелось бы конечно найти более простой доступ к данным. поэтому на 100% поддерживаю открытость вопроса.
0
0 / 0 / 0
Регистрация: 04.10.2007
Сообщений: 2,977
02.06.2010, 14:32
Цитата Сообщение от turumbay
function getElement( i As integer, j As integer)
А завтра он напишет, что ему надо три размерности



Цитата Сообщение от T1000
я так понял речь про то, почему бы не создать ровный двумерный массив с данными?
Речь об обращении к элементам многоуровневых массивов. Только не помню, работает ли такой синтаксис с вариантами О.о давно не юзал. Чаще использую описаный выше "обходной".
0
0 / 0 / 0
Регистрация: 15.03.2009
Сообщений: 615
02.06.2010, 14:41
Цитата Сообщение от Akupaka
А завтра он напишет, что ему надо три размерности ;)
имхо, проблемы надо решать по мере их поступления
тут главное локализовать источник возможных изменений.
понадобица 3 - создаст новый класс, или подкласс, или перепишет функцию на getElement( i , j , k ), или getElement( key As WrappedTLKey ) а все остальное выловит компилятор. тут как раз наличие класса рулит.
0
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
02.06.2010, 15:00
Цитата Сообщение от T1000
поясните плз что за хэши и как ими можно воспользоваться для моего вопроса.
вопроса не было - был набор неоформленных сентенций ;)
не относящийся к задачам мне понятным
хэши Dim l List As ...
у полей есть имена, а номер ниочём не говорит...
0
0 / 0 / 0
Регистрация: 08.02.2007
Сообщений: 206
02.06.2010, 23:55
lmike, только не хэш, а мэп. Потому что хэш - это результат преобразования произвольных данных в данные фиксированного размера (см. метод java.lang.Object.hashCode(), преобразующий произвольные данные - объект - в данные фиксированного размера - целое число размерностью 4 байта). А здесь - отображение (сопоставление) одного значения на другое. Аналог из Java - Map<String, ?>. В LS List устроен не как HashMap в Java, а как список (аналог java.util.List) пар (тег, значение), потому что при переборе forall x in list элементы идут в порядке их добавления в list. И при произвольном доступе к элементам списка по тегам время доступа пропорционально количеству элеменов в списке. Для java.util.HashMap это время - константа (почти).
0
0 / 0 / 0
Регистрация: 04.10.2007
Сообщений: 2,977
03.06.2010, 00:03
Цитата Сообщение от Yakov
Потому что хэш - это результат преобразования произвольных данных в данные фиксированного размера
Это хэш-функция, по-идее. А lmike упоминал хэш-таблицу (по-англ либо hash table, либо hash map )
0
0 / 0 / 0
Регистрация: 15.09.2006
Сообщений: 99
03.06.2010, 05:43
Цитата Сообщение от T1000

Code
1
2
3
4
5
    Dim TL(4)
 
For i=0 To 4
TL(i)=doc.GetItemValue("TL_"+Cstr(i+1))
Next
далее обработка
(примерно так)

Code
1
2
3
4
5
6
7
    For i=0 To 4
if isArray(TL(i)) then
for j=0 to Ubound(TL(i))
print TL(i)(j)
end for
end if
Next
0
0 / 0 / 0
Регистрация: 12.01.2009
Сообщений: 246
03.06.2010, 07:32
Type FieldType
Values As Variant
End Type
Dim Fields List As FieldType

For i=0 To 4
Fields(i)=doc.GetItemValue("TL_"+Cstr(i+ 1))
Next

forall f in fields
if isArray(f.values) then
for j=0 to Ubound(f.values)
print f.values(j)
end for
end if
end forall
0
0 / 0 / 0
Регистрация: 19.04.2009
Сообщений: 2,219
03.06.2010, 09:46
Цитата Сообщение от T1000
На выходе имеем примерно следующее:
TL(0)=["1162","1168","1172"]
TL(1)=["1262","138","12","1211","14"]
TL(2)=[""]
TL(3)=["22","777"]
TL(4)=["2212","774","714"]
Если нет угрозы превышения лимита в 32К, можно использовать и такое:
TL = ["1162:1168:1172" : "1262:138:12:1211:14" : "" : "22:777" : "2212:774:714"]
Получать значения так:

LotusScript
1
2
3
4
5
6
7
dym v as variant
For i = 0 To Ubound TL(i)
v = Split(TL(i), ":")
For j = 0 To Ubound(v)
Print v(j)
Next
Next
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.06.2010, 09:46
Помогаю со студенческими работами здесь

Сложности на стыке
Вот такая проблема возникла на стыке Qt и WinApi. С какой стороны ее решить? Мне кажется, что решение может быть на стороне Qt, поэтому и...

Контакты на стыке
Даже и не знаю, в какую тему писать. Всем известны телефоны Sony Ericsson. У многих существует страшная проблема. Это разъем для наушников...

Блик на стыке двух объектов
Появляется блик на стыке двух объектов, когда мы смотрим издали. Вблизи всё нормально. Как с этим бороться? Скриншот прилагается.

Вопрос на стыке ASP.NET и JavaScript
Имеется Веб-страница с Microsoft-овским календарем. Если я запускаю ее как StartPage - то выбор любой даты работае нормально. Но если я...

DateTime на стыке VB.Net и SQL Server.
В базе данных SQL Server в некой таблице есть куча полей типа DateTime. Имеется некая Stored Procedure которая делает Insert в эту таблицу....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru