• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

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

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

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


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

а вообще можно написать ф-цию которая буте отрезать от массива элементы так же как и @SubSet
 
И еще вариант c макросами и массивом.... ;)
[codebox]
dim doc as NotesDocument
.....
Dim tmp As Variant
tmp=Evaluate({@Subset(Authorisers;-2)},doc)
[/codebox]
 
Кто-то могет подсказать какому объекту можно присвоить значение массива?!?!
Код:
NotesDocument.Authorisers( Ubound( NotesDocument.Authorisers ))
 
не путайте обьекты и переменные, в вашем случае это обычный String или Variant

Dim sTest as String
sTest = NotesDocument.Authorisers( Ubound( NotesDocument.Authorisers ))
 
Archi2001
Не, evaluate юзать в скрипте, кмк, не очень оправдано.
Не красиво это ;)
 
не путайте обьекты и переменные, в вашем случае это обычный 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 не догоняю :(
 
Omh
Да, полностью согласен, что частое использование макросов не красиво, но просто в данном случае оно срабатывает практически одной строкой... ;)


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

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

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

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab