Как отловить ситуацию доступности Log
#1
Отправлено 16 января 2012 - 14:47
VBS
Проблема в следующем. Имеются собственные расширения Script Extensions в которых происходит обработка ошибок и запись их в лог. Тут все хорошо.
Теперь понадобилось написать вспомогательную форму, которая тоже использует эти функции. Тут было бы все хорошо, если бы не отсутсвие возможности писать в лог. Возникает ошибка типа: "Недопустимое число аргументов или присвоение значения свойства: 'Log' "
Вот и вопрос собственно: Как мне в Script Extensions в своей функции определить могу я вывести что-либо в лог или не могу? Собственно конкретно, что в лог писать не могу, что он недоступен.
#2
Отправлено 17 января 2012 - 09:16
Попробуй открыть файл на запись, не сможешь - занят.TC 7.52
VBS
Проблема в следующем. Имеются собственные расширения Script Extensions в которых происходит обработка ошибок и запись их в лог. Тут все хорошо.
Теперь понадобилось написать вспомогательную форму, которая тоже использует эти функции. Тут было бы все хорошо, если бы не отсутсвие возможности писать в лог. Возникает ошибка типа: "Недопустимое число аргументов или присвоение значения свойства: 'Log' "
Вот и вопрос собственно: Как мне в Script Extensions в своей функции определить могу я вывести что-либо в лог или не могу? Собственно конкретно, что в лог писать не могу, что он недоступен.
#3
Отправлено 17 января 2012 - 09:53
Попробуй открыть файл на запись, не сможешь - занят.
TC 7.52
VBS
Проблема в следующем. Имеются собственные расширения Script Extensions в которых происходит обработка ошибок и запись их в лог. Тут все хорошо.
Теперь понадобилось написать вспомогательную форму, которая тоже использует эти функции. Тут было бы все хорошо, если бы не отсутсвие возможности писать в лог. Возникает ошибка типа: "Недопустимое число аргументов или присвоение значения свойства: 'Log' "
Вот и вопрос собственно: Как мне в Script Extensions в своей функции определить могу я вывести что-либо в лог или не могу? Собственно конкретно, что в лог писать не могу, что он недоступен.
Не совсем то что мне нужно.
Например любой вызов Log.что_угодно вызывает ошибку "Недопустимое число аргументов или присвоение значения свойства: 'Log' "
даже проверка
if aqObject.IsSupported(Log, "Error") then
или
if IsObject(Log) then
выдают туже ошибку
#4
Отправлено 17 января 2012 - 10:45
Подозреваю, что ошибка из-за того, что в VBScript есть встроенная функция Log, и при отсутствии TestComplete'овского объекта Log скриптовый движок считает идентификатор Log именем функции, поэтому и ругается на отсутствие параметров для вызова этой функции.Например любой вызов Log.что_угодно вызывает ошибку "Недопустимое число аргументов или присвоение значения свойства: 'Log' "
даже проверка
if aqObject.IsSupported(Log, "Error") then
или
if IsObject(Log) then
выдают туже ошибку
Как вам такой вариант? -
* добавить в код extension'а какой-нибудь вспомогательный флаг доступности лога, например, LogIsAvailable;
* в коде функций в extension'е проверять значение этого флага:
If LogIsAvailable Then Log.Message "test" Else aqDlg.ShowMessage "test" End If* при вызове функций из DesignTimeAction и RecordAction устанавливать этот флаг в False, а при вызове функции из RuntimeObject устанавливать этот флаг в True.
#5
Отправлено 17 января 2012 - 12:10
Подозреваю, что ошибка из-за того, что в VBScript есть встроенная функция Log, и при отсутствии TestComplete'овского объекта Log скриптовый движок считает идентификатор Log именем функции, поэтому и ругается на отсутствие параметров для вызова этой функции.
Например любой вызов Log.что_угодно вызывает ошибку "Недопустимое число аргументов или присвоение значения свойства: 'Log' "
даже проверка
if aqObject.IsSupported(Log, "Error") then
или
if IsObject(Log) then
выдают туже ошибку
Как вам такой вариант? -
* добавить в код extension'а какой-нибудь вспомогательный флаг доступности лога, например, LogIsAvailable;
* в коде функций в extension'е проверять значение этого флага:If LogIsAvailable Then Log.Message "test" Else aqDlg.ShowMessage "test" End If* при вызове функций из DesignTimeAction и RecordAction устанавливать этот флаг в False, а при вызове функции из RuntimeObject устанавливать этот флаг в True.
Спасибо большое!
Работает!
только я использовал для этого наличие или отсутствие переменной проектов
код до начала проверок в форме
if not ProjectSuite.Variables.VariableExists("LogIsNotAvailable") then ProjectSuite.Variables.AddVariable "LogIsNotAvailable", "Boolean" end if
код после проверок в форме
if ProjectSuite.Variables.VariableExists("LogIsNotAvailable") then ProjectSuite.Variables.RemoveVariable "LogIsNotAvailable" end if
кусок кода в вызываемом scriptextensions
if not ProjectSuite.Variables.VariableExists("LogIsNotAvailable") then Call Log.Error("ErrHandler: " & aqConvert.VarToStr(sErrorText), aqConvert.VarToStr(sErrorTextEx), 500, Nothing, Sys.Desktop.FocusedWindow()) end if
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных