Ошибка 208 при Createobject

Тема в разделе "Lotus - Программирование", создана пользователем PavelT100, 13 мар 2008.

  1. PavelT100

    PavelT100 Well-Known Member

    Регистрация:
    9 июл 2007
    Сообщения:
    105
    Симпатии:
    0
    Написал некий агент который манипулирует некоторым образом с файлами, копирует, запускает и т.п.
    Sub Initialize
    On Error Goto ErrGlobal

    Set WShell = CreateObject("WScript.Shell")
    Set FSO = CreateObject("Scripting.FileSystemObject")

    ...........
    exit sub
    ErrGlobal:
    Print "GLOBAL ERROR INITIALIZE " & Cstr(Err) & ": " & Error$ & " on Line " & Cstr(Erl)

    End Sub

    запускаю его, все отличто отработал, все что надо сделал, послал в конце концов письмо с логом о пределанной работе, завершился вполне успешно. Запускаю его повторно, иногда выдается ошибка
    "GLOBAL ERROR INITIALIZE 208: Cannot create automation object on Line 4"
    т.е. не может создать объект Set WShell = CreateObject("WScript.Shell") ,
    если строку эту убрать, хотя WShell мне нужен, ошибка та же самая выдается на строке Set FSO = CreateObject("Scripting.FileSystemObject"). При этом такие ошибки возникают не всегда, а совершенно не понятно из-за каких причин. Что можете посоветовать ?
     
  2. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Может объект еще висит в памяти и поэтому не может создать новый?
    Т.е. добавить проверку типа:
    Код (Text):
    Set WShell = GetObject("WScript.Shell")
    If WShell is Nothing Then Set WShell = CreateObject("WScript.Shell")
     
  3. PavelT100

    PavelT100 Well-Known Member

    Регистрация:
    9 июл 2007
    Сообщения:
    105
    Симпатии:
    0
    Проверка, это хорошо, только если объект "висит в памяти" как принудительно его оттуда "снять" ? Иначе боюсь простой повторный вызов CreateObject ничего кардинально не изменит, хотя, конечно, обязательно попробую.
     
  4. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Хз. Ты пока просто проверь. Хотя, сомневаюсь, что это поможет. ;)
     
  5. PavelT100

    PavelT100 Well-Known Member

    Регистрация:
    9 июл 2007
    Сообщения:
    105
    Симпатии:
    0
    Проверил - не работает.
    [codebox]Sub Initialize
    On Error Goto ErrGlobal
    Print "Begin sinchronize"

    Set WShell = Nothing
    Set FSO = Nothing

    Set WShell = CreateObject("WScript.Shell")
    If WShell Is Nothing Then
    Print "Error in set WShell"
    Set WShell = CreateObject("WScript.Shell")

    End If
    ....
    Set FSO = Nothing
    Set WShell = Nothing
    Exit Sub
    ErrGlobal:
    Print "GLOBAL ERROR INITIALIZE " & Cstr(Err) & ": " & Error$ & " on Line " & Cstr(Erl)
    On Error Goto 0
    [/codebox]
    и мне сказали что ошибка 208 как и прежде в строке
    Set WShell = CreateObject("WScript.Shell"), а проверка на Nothing уже просто не актульна, ошибка вырабатывается до проверки.
     
  6. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    В первый раз надо делать не CreateObject, а GetObject. ;)
     
  7. PavelT100

    PavelT100 Well-Known Member

    Регистрация:
    9 июл 2007
    Сообщения:
    105
    Симпатии:
    0
    Ситуация изменилась но не намного. Ошибка 209: Automation object file name error
    на строке
    Set WShell = GetObject("WScript.Shell")
     
  8. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Set WShell = GetObject(, "WScript.Shell")
     
  9. PavelT100

    PavelT100 Well-Known Member

    Регистрация:
    9 июл 2007
    Сообщения:
    105
    Симпатии:
    0
    Увы, в этом случае результат то же, что был в самом начале, ошибка 208: Cannot create automation object
     
  10. Sandr

    Sandr Гость

    перед Set WShell = GetObject(, "WScript.Shell") напишите on error resume next
     
  11. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Не сильно надеялся, что сработает. Но попробовать стоило... :)
    Могу посоветовать проверить на другом сервере, если возможно. Вдруг проблема не в лотусе.
     
  12. tatarin25

    tatarin25 Гость

    при запуске любой игры выдаёт CFXGenericEngine : Initializi()
     
  13. xKlonx

    xKlonx Lotus team
    Lotus team

    Регистрация:
    10 сен 2009
    Сообщения:
    412
    Симпатии:
    0
    tatarin25
    Это не форум для игр ;)
     
  14. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.081
    Симпатии:
    300
    забавно наблюдать - как люди с виндовыми КОМами борятся, а ведь говоришь им - не трогай каку ;)
    по теме - надо выяснить - а стоит ли КОМ трогать, или достаточно обойтись др. методами обсчения с ОС
    или короче - "который манипулирует некоторым образом с файлами, копирует, запускает и т.п." это зачем делается?
     
  15. VladSh

    VladSh начинающий
    Lotus team

    Регистрация:
    11 дек 2009
    Сообщения:
    1.251
    Симпатии:
    2
    Здесь тоже GetObject советовали...)))
     
  16. NetWood

    NetWood Lotus team
    Lotus team

    Регистрация:
    17 апр 2008
    Сообщения:
    308
    Симпатии:
    0
    Хочется сказать байан, но не очевидный :)
    Службы компонентов смотрели?
    dcomcnfg
    Там находите нужную компоненту и в ее свойствах безопасности ставите или административный пароль для запуска или текущий пользователь. У меня похожие траблы были при запуске по расписанию агента с доступом к Excel. лечил через dcomcnfg
     
Загрузка...

Поделиться этой страницей