Перейти к содержимому

Фотография

Как отловить ситуацию доступности Log


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 4

#1 anagramma

anagramma

    Активный участник

  • Members
  • PipPip
  • 87 сообщений
  • Город:Moskow

Отправлено 16 января 2012 - 14:47

TC 7.52
VBS
Проблема в следующем. Имеются собственные расширения Script Extensions в которых происходит обработка ошибок и запись их в лог. Тут все хорошо.
Теперь понадобилось написать вспомогательную форму, которая тоже использует эти функции. Тут было бы все хорошо, если бы не отсутсвие возможности писать в лог. Возникает ошибка типа: "Недопустимое число аргументов или присвоение значения свойства: 'Log' "

Вот и вопрос собственно: Как мне в Script Extensions в своей функции определить могу я вывести что-либо в лог или не могу? Собственно конкретно, что в лог писать не могу, что он недоступен.
  • 0

#2 Misha_NSK

Misha_NSK

    Новый участник

  • Members
  • Pip
  • 58 сообщений


Отправлено 17 января 2012 - 09:16

TC 7.52
VBS
Проблема в следующем. Имеются собственные расширения Script Extensions в которых происходит обработка ошибок и запись их в лог. Тут все хорошо.
Теперь понадобилось написать вспомогательную форму, которая тоже использует эти функции. Тут было бы все хорошо, если бы не отсутсвие возможности писать в лог. Возникает ошибка типа: "Недопустимое число аргументов или присвоение значения свойства: 'Log' "

Вот и вопрос собственно: Как мне в Script Extensions в своей функции определить могу я вывести что-либо в лог или не могу? Собственно конкретно, что в лог писать не могу, что он недоступен.

Попробуй открыть файл на запись, не сможешь - занят.
  • 0

#3 anagramma

anagramma

    Активный участник

  • Members
  • PipPip
  • 87 сообщений
  • Город:Moskow

Отправлено 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
выдают туже ошибку
  • 0

#4 modbear

modbear

    Специалист

  • Members
  • PipPipPipPipPip
  • 548 сообщений

Отправлено 17 января 2012 - 10:45

Например любой вызов Log.что_угодно вызывает ошибку "Недопустимое число аргументов или присвоение значения свойства: 'Log' "
даже проверка
if aqObject.IsSupported(Log, "Error") then
или
if IsObject(Log) then
выдают туже ошибку

Подозреваю, что ошибка из-за того, что в VBScript есть встроенная функция Log, и при отсутствии TestComplete'овского объекта Log скриптовый движок считает идентификатор Log именем функции, поэтому и ругается на отсутствие параметров для вызова этой функции.


Как вам такой вариант? -
* добавить в код extension'а какой-нибудь вспомогательный флаг доступности лога, например, LogIsAvailable;
* в коде функций в extension'е проверять значение этого флага:
If LogIsAvailable Then
  Log.Message "test"
Else
  aqDlg.ShowMessage "test"
End If
* при вызове функций из DesignTimeAction и RecordAction устанавливать этот флаг в False, а при вызове функции из RuntimeObject устанавливать этот флаг в True. 
  • 1

#5 anagramma

anagramma

    Активный участник

  • Members
  • PipPip
  • 87 сообщений
  • Город:Moskow

Отправлено 17 января 2012 - 12:10


Например любой вызов Log.что_угодно вызывает ошибку "Недопустимое число аргументов или присвоение значения свойства: 'Log' "
даже проверка
if aqObject.IsSupported(Log, "Error") then
или
if IsObject(Log) then
выдают туже ошибку

Подозреваю, что ошибка из-за того, что в VBScript есть встроенная функция Log, и при отсутствии TestComplete'овского объекта Log скриптовый движок считает идентификатор Log именем функции, поэтому и ругается на отсутствие параметров для вызова этой функции.


Как вам такой вариант? -
* добавить в код 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

  • 0


Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных