Помогите разобраться!

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

Помогите разобраться!

Сообщение Welder » 17.04.2006 (Пн) 5:05

пишу скрипт такого типа:
Dim MyPath
Mypath = "c:\temp\"
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Dir = FSO.GetFolder(Mypath)
Set Folders = Dir.SubFolders

For Each Lfolder In Folders
WScript.Echo Mypath & LFolder.Name
WScript.Echo GetAttr(Mypath & LFolder.Name)
Next

На строчке WScript.Echo GetAttr(Mypath & LFolder.Name) происходит ошибка type mismatch. Что не так?
Заранее спасибо!

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 17.04.2006 (Пн) 10:59

Я так думаю, что GetAttr это не встроенная функиця. Поэтому перед ней, надо бы ставить имя объекта из которого она вызывается :)

Welder
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 14.04.2006 (Пт) 9:04

Сообщение Welder » 17.04.2006 (Пн) 11:55

Дык она же не говорит что не знает GetAttr, а говороит:
Microsoft VBScript runtime error: Type mismatch: 'GetAttr'

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 17.04.2006 (Пн) 12:04

А ты Option Explicit поюзай.

Сразу увидишь
Код: Выделить всё
---------------------------
Сервер сценариев Windows
---------------------------
Сценарий:   C:\1.vbs
Строка:   10
Символ:   1
Ошибка:   Переменная не определена: 'GetAttr'
Код:   800A01F4
Источник:    Ошибка выполнения Microsoft VBScript

---------------------------
ОК   
---------------------------
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

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

Сообщение alibek » 17.04.2006 (Пн) 12:04

А подумать?
Если такой функции нет, значит ты выводишь элемент массива GetAttr. А поскольку индекс массива указывается числом, а не строкой, оттуда и ошибка.
Lasciate ogni speranza, voi ch'entrate.

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 17.04.2006 (Пн) 12:16

Хм.. Встроенная оказывается :roll:

А тогда, я думаю что она не работает в VBS, вот что :)

Welder
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 14.04.2006 (Пт) 9:04

Сообщение Welder » 17.04.2006 (Пн) 12:32

Как быть тогда, мне нужны дирктории которые с атрибутом system?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 17.04.2006 (Пн) 12:44

Видимо, пользоваться средствами созданного FSO?
Только интересно - зачем скрипту могли понадобиться системные папки?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Welder
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 14.04.2006 (Пт) 9:04

Сообщение Welder » 18.04.2006 (Вт) 3:59

Да они мне как раз и не нужны, мне с них нужно снят этот атрибут.
Кто подскажет как это делается стандартными средствами FSO?
Сильно не пинайте, но я пишу свой первый VB скрипт.


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

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

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

    TopList  
cron