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

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

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

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

Isnewnote

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
Парочка багов (или фич?).
Первый:
Событие QuerySave пустое. В PostSave пишем:
Код:
If source.Document.IsNewNote Then Msgbox "true" Else Msgbox "false"
В результате с запущенным дебаггером мы получим сообщение true, без него - false.

Второй:
В QuerySave пишем, например:
Код:
Sub Querysave(Source As Notesuidocument, Continue As Variant)
If Source.Document.Test(0) = "asdas" Then Sleep(1)' на форме есть поле Test
Continue = True
End Sub
В результате получаем false. Если заремарить условие, то true.

Это что такое?

Причем во всех случаях происходит сохранение документа. Т.е. в PostSave IsNewNote должно быть всегда False. Или нет?
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
Оказывается, первый работает только в локальной базе.
Второй - везде.
 
F

Fossil Code

А endif намеренно пропущен? Ну и что, что синтаксис позволяет...
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
Для: Fossil Code
В смысле пропущен? Не понял вопроса. :rolleyes:
 
M

morpheus

Для: Fossil Code
+1 к непонявшим вапрос :rolleyes:
 
H

Hedg

Ну и чё тут не понятного ?? Fossil Code обратил внимание на то, что оператор if не закрыт endif'ом.
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
Для: Hedg
В соответствие с синтаксисом End If мало того, что не нужен, так он не может быть там.
 
F

Fossil Code

Ну, раззадорили, право!

Проверил и Ваш вариант и следующий

Sub Querysave(Source As Notesuidocument, Continue As Variant)
If Source.Document.Test(0) = "asdas" Then
Sleep(1)
End If
Continue = True
End Sub

Преимущество последнего в том, что гораздо проще судить в отладчике, выполняется условие, или нет.

Впрочем, это лирическое отступление. Так вот, не вижу, почему Вы решили, что "В результате получаем false. Если заремарить условие, то true." False не было вовсе, как и полагает код, т.к. при любом значении поля Test документ сохранялся. Отработка паузы по значению поля также работала правильно... R.7.0.2
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
<!--QuoteBegin-Fossil Code+9:02:2007, 16:31 -->
<span class="vbquote">(Fossil Code @ 9:02:2007, 16:31 )</span><!--QuoteEBegin-->Так вот, не вижу, почему Вы решили, что "В результате получаем false. Если заремарить условие, то true." False не было вовсе, как и полагает код, т.к. при любом значении поля Test документ сохранялся.
[snapback]55646" rel="nofollow" target="_blank[/snapback]​
[/quote]
Само условие в QuerySave не имеет значения. Важно то, что происходит потом в событии PostSave
Сделай так.
Код:
Sub Querysave(Source As Notesuidocument, Continue As Variant)
Msgbox Source.Document.UniversalID
Continue = True
End Sub
Sub Postsave(Source As Notesuidocument)
If source.Document.IsNewNote Then Msgbox "true" Else Msgbox "false"
End Sub
А потом так (заремарина строка):
Код:
Sub Querysave(Source As Notesuidocument, Continue As Variant)
'	Msgbox Source.Document.UniversalID
Continue = True
End Sub
Sub Postsave(Source As Notesuidocument)
If source.Document.IsNewNote Then Msgbox "true" Else Msgbox "false"
End Sub
Так вот в первом случае появится сообщение "true", а во втором "false". Вот и вся багофича.
 
F

Fossil Code

Понятно. Не так Вас сначала понял. Показалось, что речь иде о двух _разных_ багах. И обусуждал изолированный второй. Заблуждение подкрепилось Вашим вторым постом :)
 
Мы в соцсетях:

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