• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Как проверить Subscript Out Of Range

  • Автор темы Guest
  • Дата начала
G

Guest

Пытался проверить, через:
Код:
If Not Isempty(parDoc.GetItemValue("TrancheContractLink")(i)) Then varTrancheContractLink(i) = parDoc.GetItemValue("TrancheContractLink")(i)
не помогает, можете подсказать как правильно проверить :(
 
A

Archi2001

Через цикл ForAll .... (просто по коду не понятно, часть цикла это или единичное условие)
он не выйдет за пределы массива, а внутри можно еще какие-нить проверки сделать ...
 
G

Guest

Sorry, что дастою, как правильно проверить пустое ли поле:
Код:
If (Not Isempty(docDocument.ContractLinkH(0))) Then
че-то не работает, пропускает дальше, а
Код:
Call itemTrancheContractLink.AppendToTextList(docDocument.ContractLinkH(0))
пишет - Subscript Out Of Range
 
O

Omh

Isempty(NotesDocument.Field(0)) всегда будет false
AppendToTextList - гогно :(
Что за задача?
 
G

Guest

Isempty(NotesDocument.Field(0)) всегда будет false
AppendToTextList - дебильный метод

Что за задача?

Если поле ContractLinkH - не пустое, то тогда я добавляю это значение в поле TrancheContractLinkH. В противном случае доваляю пустое значение.
Почему - AppendToTextList, мне надо добавлять значение в поле, а не заменять

Код:
Set itemTrancheContractLink = cDoc.GetFirstItem("TrancheContractLinkH")
If (Not Isempty(docDocument.ContractLinkH(0))) Then
Call itemTrancheContractLink.AppendToTextList(docDocument.ContractLinkH(0))
Else
Call itemTrancheContractLink.AppendToTextList("")
End If
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
Заменяем всё на:
docDocument.TrancheContractLinkH = ArrayAppend(docDocument.TrancheContractLinkH, docDocument.ContractLinkH)
 
A

Archi2001

Если поле ContractLinkH - не пустое, то тогда я добавляю это значение в поле TrancheContractLinkH. В противном случае доваляю пустое значение.
Почему - AppendToTextList, мне надо добавлять значение в поле, а не заменять

Код:
Set itemTrancheContractLink = cDoc.GetFirstItem("TrancheContractLinkH")
If (Not Isempty(docDocument.ContractLinkH(0))) Then
Call itemTrancheContractLink.AppendToTextList(docDocument.ContractLinkH(0))
Else
Call itemTrancheContractLink.AppendToTextList("")
End If


Я бы честно через массив сделал бы ... может конечно неоптимально разводить массивы, но при работе с поялми массивы нагляднее получаются...
и добавлять в массив через Arrayappend, а потом этот массив присваивать соотв. полю...
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
Денис Кириченко
И вообще, хранить в поле пустые значения не получится. Так что лучше добавить что-нибудь.
 
O

Omh

Код:
Dim itemTrancheContractLink As NotesItem
Set itemTrancheContractLink = cDoc.GetFirstItem("TrancheContractLinkH")
If Not itemTrancheContractLink Is Nothing Then
Dim Vals As Variant
Vals = docDocument.GetItemValue("ContractLinkH")

Dim ValueToAdd As String
ValueToAdd = Cstr(Vals(0))

Call itemTrancheContractLink.AppendToTextList(ValueToAdd)
End If
Вроде так.
Вообще, код далеко не самый лучший.

Archi2001
Я тоже за массивы.
Это подконтрольно.
 
G

Guest

Код:
Dim itemTrancheContractLink As NotesItem
Set itemTrancheContractLink = cDoc.GetFirstItem("TrancheContractLinkH")
If Not itemTrancheContractLink Is Nothing Then
Dim Vals As Variant
Vals = docDocument.GetItemValue("ContractLinkH")

Dim ValueToAdd As String
ValueToAdd = Cstr(Vals(0))

Call itemTrancheContractLink.AppendToTextList(ValueToAdd)
End If
Вроде так.
Вообще, код далеко не самый лучший.

Archi2001
Я тоже за массивы.
Это подконтрольно.

Ты бы конструктивно критиковал, как лутше сделать, а то просто не самый лутший. Через backgraund тут я думаю не выйдет.
 
O

Omh

Дык и я и Archi2001 сказали: через массивы.
если лень через массивы, то можно последовать совету Medevic'a

Я же зла не хочу :(
Сейчас привыкнешь писать через NotesItem.AppendToTextList, FieldSet(Get)Text
Самому потом переучиваться придёться.

Поэтому лучше сразу писать нормально.
 
M

morpheus

Поддерживая высказывание Constantin A Chervonenko , хочу спросить у Omh:
- а на чем собственно основываеться такое умозаключение???(про калл)
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
Работает только со строками. Т.е. для дат и чисел нужен другой способ. А зачем делать винегрет, когда есть универсальный способ?
 
K

Kee_Keekkenen

Денис Кириченко
И вообще, хранить в поле пустые значения не получится. Так что лучше добавить что-нибудь.

это почему еще ? массив ("","","") в многозначное поле -- там и будет 3 пустых значения..
 
O

Omh

Для Morpheus

Medevic за меня ответил ни в бровь, а в глазину.
А зачем делать винегрет, когда есть универсальный способ? (с)
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!