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

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

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

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

сложности с преобразованием типов

  • Автор темы phantom76
  • Дата начала
P

phantom76

Казалось, что раньше я решал уже данную задачу, но вспомнить как это делал не могу :)


пример:

есть статический массив, где каждый элемент определенный метод или имя переменной вида:

vColumnsArr(1,2) = {zdoc.GetItemValue("Created")(0)}

далее хотелось бы получить значение элемента массива не как строку, а как оператор:

vExcelObj.Cells(1, i ).Value = vColumnsArr(i,2) -> сейчас получается vExcelObj.Cells(1, i ).Value = {zdoc.GetItemValue("Created")(0)},

а нужно: vExcelObj.Cells(1, i ).Value = zdoc.GetItemValue("Created")(0)

сразу скажу что массив содержит не стандартный набор данных, где можно было бы упростить все до перебора имен полей..
 
N

nvyush

Execute "vExcelObj.Cells(1, i ).Value = " & vColumnsArr(i,2)) '???
 
P

phantom76

Спасибо! Разбираюсь, пока пока вылавливаю ошибки на этом операторе
 
P

phantom76

почему-то не получается даже в упрощенном варианте:

Declaration
Dim zdoc As NotesDocument
Dim vExcelObj As Variant
Dim vColumnsArr(1 To 8, 1 To 2) As Variant
Dim val2 As String


sub

Execute (val2 = zdoc.GetItemValue("Created")(0)) - срока 105
vExcelObj.Cells(j, k).Value = val2

---------------------------
Внимание
---------------------------
Ошибка: $EXECUTE$+1: Unexpected: False; Expected: Statement в строке 105
---------------------------
ОК
---------------------------
 
N

nvyush

phantom76
Execute {val2 = zdoc.GetItemValue("Created")(0)}
Выражение нужно в фигурные скобки заключить, иначе получается логическое сравнение, о чём, собственно, и сообщает Notes
 
P

phantom76

phantom76
Execute {val2 = zdoc.GetItemValue("Created")(0)}
Выражение нужно в фигурные скобки заключить, иначе получается логическое сравнение, о чём, собственно, и сообщает Notes
Спасибо, этот вариант я тоже пробовал:

в этом случае

---------------------------
Внимание
---------------------------
Ошибка: $EXECUTE$+1: Variant does not contain an object в строке 105
---------------------------
ОК
---------------------------

хотя

val2 = zdoc.GetItemValue("Created")(0) - все работает, zdoc задекларировал в соответствующем разделе
 
D

Darker

phantom76

zdoc у Вас должен определяться непосредственно в Execute

Добавлено:
LotusScript considers text a separate script, compiling and executing it as a temporary module that's unloaded as soon as execution finishes.
 
D

Darker

До Execute запомните UNID zdoc-а, и в Execute переполучите его
 
N

nvyush

phantom76
Все внешние переменные, используемые в Execute, должны быть объявлены как Public (и в разделе (Globals) если в форме/представлении).
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
214
как выше указал nvy
добавлю, что Execute создаёт свой "временный" модуль, в кот. могут быть свои Initialize и Terminate (что иногда полезно)..., джек-пот и шлюхи :)
 
Мы в соцсетях:

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