• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

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

K-Fire

Дифстфительно, не понимаю, почему так хают метод AppendToTextList. Он прекрасно добавляет ненулевые строковые значения к полю, не разу еще не замечал что он этого не делает... :)
 
S

Sandr

Дифстфительно, не понимаю, почему так хают метод AppendToTextList. Он прекрасно добавляет ненулевые строковые значения к полю, не разу еще не замечал что он этого не делает... :)

А Вы гляньте в свойства документа после этой операции (в набор итемов, смотреть тот итем, к которому Вы эту операцию применяли)... вот удивитесь :)
 
G

Guest

Народ, а @Subset аналог на LotusScript - есть?
 
M

morpheus

вроде нет, руками надо описывать
 
M

morpheus

Денис Кириченко
а нука поподробнее что надо и что имметься?
 
G

Guest

Денис Кириченко
а нука поподробнее что надо и что имметься?
Есть поле со списком имен, которые разделенны между собой ";". Мне надо 2 последних имени на собачьем языке, это елементарно - FIELD LastAuthorizer := @Subset(Authorisers ; -2 );
 
M

morpheus

Денис Кириченко
Ну так и брать можно скриптом чтото вроде


Код:
 NotesDocument.Authorisers( Ubound( NotesDocument.Authorisers ) ) - последнне значение
NotesDocument.Authorisers( Ubound( NotesDocument.Authorisers ) - 1 ) - Предпоследнне значение

а вообще можно написать ф-цию которая буте отрезать от массива элементы так же как и @SubSet
 
A

Archi2001

И еще вариант c макросами и массивом.... ;)
[codebox]
dim doc as NotesDocument
.....
Dim tmp As Variant
tmp=Evaluate({@Subset(Authorisers;-2)},doc)
[/codebox]
 
G

Guest

Кто-то могет подсказать какому объекту можно присвоить значение массива?!?!
Код:
NotesDocument.Authorisers( Ubound( NotesDocument.Authorisers ))
 
M

morpheus

не путайте обьекты и переменные, в вашем случае это обычный String или Variant

Dim sTest as String
sTest = NotesDocument.Authorisers( Ubound( NotesDocument.Authorisers ))
 
O

Omh

Archi2001
Не, evaluate юзать в скрипте, кмк, не очень оправдано.
Не красиво это ;)
 
G

Guest

не путайте обьекты и переменные, в вашем случае это обычный String или Variant

Dim sTest as String
sTest = NotesDocument.Authorisers( Ubound( NotesDocument.Authorisers ))
не массивы, не переменные, не поле не помагает ругается Type mismatch ;)

В Help дан код:
Код:
Dim session As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim newReaders(0 To 63) As String
Dim reader As String
Set db = session.CurrentDatabase
Set view = db.GetView("By Category")
If Isempty(view.Readers) Then
n = 0
Else
For j = 0 To Ubound(view.Readers)
newReaders(j) = view.Readers(j)
Messagebox "Current reader: " & newReaders(j)
Next
n = Ubound(view.Readers) + 1
End If
reader = Inputbox("Name of reader?")
Do While reader <> ""
newReaders(n) = reader
reader = Inputbox("Name of reader?")
n = n + 1
Loop
view.Readers = newReaders
но какого типа переменная n не догоняю :(
 
A

Archi2001

Omh
Да, полностью согласен, что частое использование макросов не красиво, но просто в данном случае оно срабатывает практически одной строкой... ;)


n скорее всего Integer

да, здесь n - точно Integer... а вообще всегда проверить можно Typename() ....
 
G

Guest

n скорее всего Integer
Morpheus, sorry можно не много ликбеза Ubound работает с массивами данных, а поле содержашие некоторое количество даных (может одно), разделенных ";" относится к массиву. У меня есть подзрение, что Ubound не считает поле за массив. Поэтому и выдает ошибку - Type mismatche ;)
 
K

Kee_Keekkenen

ээ.. я б так (NotesDocument.Authorisers( Ubound( NotesDocument.Authorisers ))) не додумался написать
все-таки правильней поле занести в вариант
Код:
dim var as variant
var = NotesDocument.getitemvalue("Authorisers")
sTest = var( ubound(var))
или использовать итем
Код:
Set item = NotesDocument.GetFirstItem("Authorisers")
sTest = item.Values(Ubound(item.Values))
 
A

Archi2001

Morpheus, sorry можно не много ликбеза Ubound работает с массивами данных, а поле содержашие некоторое количество даных (может одно), разделенных ";" относится к массиву. У меня есть подзрение, что Ubound не считает поле за массив. Поэтому и выдает ошибку - Type mismatche ;)

а поле ведь многозначное? ... тогда неважно чем оно разделено - для "интерпритатора" оно является массивом... даже "однозначное" поле есть массив... только Ubound в этом случае вернёт 0
 
Мы в соцсетях:

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