VB -> VBScript

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Дмитрий Нижаде
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 20.07.2004 (Вт) 10:40
Откуда: Москва

VB -> VBScript

Сообщение Дмитрий Нижаде » 20.07.2004 (Вт) 12:51

Не могу достучаться до свойства объекта

код на VB:

Код: Выделить всё
    Dim dd As New DropDirectory
    Dim mess As CDO.IMessages
    Dim mes As CDO.Message
    Dim bp As CDO.IBodyPart
    Dim bps As CDO.IBodyParts
    Dim c As Integer
   
    Set mess = dd.GetMessages("..")
   
    If mess.Count = 0 Then Exit Sub
   
    For a = 1 To mess.Count
        Set mes = mess(a)
       
        If Not mes.AutoGenerateTextBody Then

.. и т.д.


на VBScript:

Код: Выделить всё
   Dim dd, mess, bp, bps, mes
   

   Set dd = CreateObject("CDO.DropDirectory")
     
   Set mess = dd.GetMessages("..")
   
   If mess.Count = 0 Then
      Main = DTSTaskExecResult_Success
      Exit Function
   end if



   For a = 1 To mess.Count
      Set mes = mess.Item(a)
      
      If mes.AutoGenerateTextBody = false Then

.. и т.д.


на последней строке вываливается с ошибкой:
The System cannot find the file specified.

Хотя на простом VB все работает, а вот на VBS при обращении к свойству (AutoGenerateTextBody) вываливается. :(
Причем тоже самое и при попытки доступа к другим св-вам.
Такое чуство что она их просто не видит.

Помогите плиз.

MOV
Постоялец
Постоялец
 
Сообщения: 414
Зарегистрирован: 13.03.2004 (Сб) 15:13
Откуда: Санкт-Петербург

Сообщение MOV » 21.07.2004 (Ср) 9:39

Х. з. - может надо попробовать освобождать mes, прежде чем присвоить ему новое значение? типа так:
Код: Выделить всё
...
   For a = 1 To mess.Count
      Set mes = mess.Item(a)
       
      If mes.AutoGenerateTextBody = false Then
      ...
      Set mes=Nothing
.. и т.д.


:shock: хотя, думаю, совсем не обязательно :?
А что за прога? Чем занимается, может можно как-то без CDO (к стати пойду гляну, что это за CDO или это фича тоего собственного производства?)

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 21.07.2004 (Ср) 9:55

CDO это библиотека для работы с почтой (ставится вместе с Outlook/Exchange).
Может дело в том, что у скрипта нет доступа к определенным свойствам? По идее, скрипт не должен иметь доступа к содержимому письма и адресной книге.
Lasciate ogni speranza, voi ch'entrate.

Дмитрий Нижаде
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 20.07.2004 (Вт) 10:40
Откуда: Москва

Сообщение Дмитрий Нижаде » 21.07.2004 (Ср) 10:11

Проблема решилась в простой необработке первого письма в коллекции.

по ходу дела оно вообще какое то левое, т.к. присутствует всегда, в отладчике видны лишь некоторые св-ва (которые судя по всему дефолтные), а из программы до них вообще невозможно достучаться. кстати теперь по ходу дела и на vb :))

Вообщем просто игнорирую первое письмо и все.

p.s. глюк какойто


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 13

    TopList