Массив в vbs

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

Массив в vbs

Сообщение moco » 27.11.2006 (Пн) 10:27

День добрый.
Существует некий скриптик (не мой, я просто немного переделал ), отсылающий сообщения на комп пользователя, при обновлении подпапок заданной папки:

Код: Выделить всё
RunForFolder "E:\as\"

Function RunForFolder(folderspec)
   Dim fso, f, f1, fc

   Set fso = CreateObject("Scripting.FileSystemObject")
   Set f = fso.GetFolder(folderspec)
   Set fc = f.SubFolders
   Set WshShell = WScript.CreateObject("WScript.Shell")
   

   For Each f1 in fc

      If CompareDate(folderspec & f1.name) = True Then WshShell.Run "net send  adf  " & "ïàïêà " &f1.name & " îáíîâëåíà"

   Next
End Function

'*************************************************************Function CompareDate(strFolderName)
   Dim fso, f, s, i
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set f = fso.GetFolder(strFolderName)

   i = DateDiff("n", f.DateLastModified, Now)
   

   If i < 30 Then     
      CompareDate = True
   Else
      CompareDate = False
   End If
End Function


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

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 27.11.2006 (Пн) 10:46

В чём возникают проблемы?

ЗЫ. Уважаемый moco, когда вы задаёте вопрос на этом форуме, никогда не пишите "Нужно...", пишите что не получается и спрашивайте, как это сделать.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

moco
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 27.11.2006 (Пн) 10:04

Сообщение moco » 27.11.2006 (Пн) 11:52

Уважаемый Хакер, "нужно" - это в данном контексте означает всего лишь поставленную предо мной задачу (вроде как дано - требуется).

Трудность же заключается в том, что с массивами ниразу не работал, и в общем-то непонятно с чего начать, с самого инициализирования данного массива и дальнейшего его использования. Как бы сказать - мысль есть, а как ее написать нипанимай )

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

Сообщение alibek » 27.11.2006 (Пн) 12:24

Например, можно так:
Data = Array(Array("comp1","dir1"), Array("comp2","dir2"), Array("comp3","dir3"))
...
For I = LBound(Data, 0) To UBound(Data, 0)
WScript.Echo Data(I, 0) 'компьютер
WScript.Echo Data(I, 1) 'каталог
Next
Lasciate ogni speranza, voi ch'entrate.

moco
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 27.11.2006 (Пн) 10:04

Сообщение moco » 27.11.2006 (Пн) 13:59

alibek
Индекс выходит за пределы допустимого диапазона 'Data'


Это если просто запустить предложенное вами (

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 27.11.2006 (Пн) 14:25

Это потому что размерности нумеруются с 1, а не с 0.
Изображение

moco
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 27.11.2006 (Пн) 10:04

Сообщение moco » 27.11.2006 (Пн) 14:53

Код: Выделить всё
For I = LBound(Data, 1) To UBound(Data, 1)

исправил, здесь ошибки нет
ошибку дает здесь,
Код: Выделить всё
WScript.Echo Data(I, 0)


Индекс выходит за пределы допустимого диапазона 'Data'

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 27.11.2006 (Пн) 14:58

moco писал(а):
Код: Выделить всё
For I = LBound(Data, 1) To UBound(Data, 1)

исправил, здесь ошибки нет
ошибку дает здесь,
Код: Выделить всё
WScript.Echo Data(I, 0)


Индекс выходит за пределы допустимого диапазона 'Data'


а не судьба и здесь 0 на 1 заменить?
Весь мир матрица, а мы в нем потоки байтов!

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 27.11.2006 (Пн) 15:06

Не судьба. Этот код вообще никак не поправить.
Верный:
Код: Выделить всё
Data = Array(Array("comp1","dir1"), Array("comp2","dir2"), Array("comp3","dir3"))
For I = LBound(Data) To UBound(Data)
WScript.Echo Data(I)(0) 'Є®¬ЇмовҐа
WScript.Echo Data(I)(1) 'Є в «®Ј
Next
Изображение

moco
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 27.11.2006 (Пн) 10:04

Сообщение moco » 27.11.2006 (Пн) 15:19

!Viper! менял =)
tyomitch, спасип, буим работать с ним )

moco
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 27.11.2006 (Пн) 10:04

Сообщение moco » 27.11.2006 (Пн) 16:30

Всем, спасибо. Все получилось! :)

HandKot
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 283
Зарегистрирован: 28.06.2006 (Ср) 13:34
Откуда: Sergiev Posad

Сообщение HandKot » 27.11.2006 (Пн) 16:35

внесу свою лепту

Код: Выделить всё
Private Type Comp2Send
    comp As String
    dir As String
End Type

Public Sub test()

    Dim toSend(3) As Comp2Send
   
    toSend(0).comp = "Comp1"
    toSend(0).dir = "Dir1"
   
    toSend(1).comp = "Comp2"
    toSend(1).dir = "Dir2"

    toSend(2).comp = "Comp3"
    toSend(2).dir = "Dir3"

    ''''
    Dim i As Integer
   
    For i = LBound(toSend) To UBound(toSend)
        Debug.Print toSend(i).comp
        Debug.Print toSend(i).dir
    Next i
End Sub
I Have Nine Lives You Have One Only
THINK!


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

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

Сейчас этот форум просматривают: Majestic-12 [Bot] и гости: 126

    TopList