Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Горячая тема (более 10 ответов) FileSystemObject: как получить элемент коллекции "Files"? (число прочтений - 6025 )
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
FileSystemObject: как получить элемент коллекции "Files"?
24. Декабря 2008 :: 10:56
Печать  
спрошу здесь, почти в тему: уже час туплю, не могу понять, как мне получить элемент коллекции "Files", вот код:
Код
Выбрать все
Если _FSO.FolderExists(_Каталог) = -1 Тогда
	_Folder = _FSO.GetFolder(_Каталог);
	_Files = _Folder.Files;
	Для н = 1 По _Files.Count Цикл
	      _File = _Files.Item(н);   <--- вот здесь ошибка
... 


порыл доку, действительно так работать не должно, но не понимаю тогда, как мне получить объект "File" из коллекции "Files"?
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: FileSystemObject: как получить элемент коллекции "Files"?
Ответ #1 - 24. Декабря 2008 :: 11:41
Печать  
Код
Выбрать все
Для н = 0 По _Files.Count-1 Цикл 

?
  
Наверх
 
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: FileSystemObject: как получить элемент коллекции "Files"?
Ответ #2 - 24. Декабря 2008 :: 11:43
Печать  
пробовал, проблема не в этом...
  
Наверх
 
IP записан
 
Igor-bts
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 103
Зарегистрирован: 14. Июля 2006
Re: FileSystemObject: как получить элемент коллекции "Files"?
Ответ #3 - 24. Декабря 2008 :: 12:26
Печать  
Сама ошибка как звучит?
  
Наверх
ICQ  
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: FileSystemObject: как получить элемент коллекции "Files"?
Ответ #4 - 24. Декабря 2008 :: 12:33
Печать  
да никак не звучит Печаль

Код
Выбрать все
_File = _Files.Item(н);
{D:\DB\RESEARCH\ТЕСТЫ\ТЕСТ_FILESYSTEMOBJECT.ERT(11)}: :  

  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: FileSystemObject: как получить элемент коллекции "Files"?
Ответ #5 - 24. Декабря 2008 :: 12:45
Печать  
А если _Files._Item(Н) ?

ЗЫ где-то я видел решение подобной проблемы с КОМ-Коллекциями для 1С - на мисте или еще где.
Как-то через MS ScriptControl решалось.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer &amp;&amp; tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: FileSystemObject: как получить элемент коллекции "Files"?
Ответ #6 - 24. Декабря 2008 :: 12:55
Печать  
не, не помогает...
блин, простейшая казалось бы вещь и такой затык...
реплика Федора насчет тормознутости объекта ФС из 1С натолкнула на то, что бы переделать мой класс для работы с файловой системой на FileSystemObject, а тут такие грабли Печаль
  
Наверх
 
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: FileSystemObject: как получить элемент коллекции "Files"?
Ответ #7 - 24. Декабря 2008 :: 13:08
Печать  
во общем, насколько я понимаю, должно работать так:
Код
Выбрать все
Если _FSO.FolderExists(_Каталог) = -1 Тогда
	_Folder = _FSO.GetFolder(_Каталог);
	_Files = _Folder.Files;
	_File = _Files._Item("<ИмяФайла>");
... 

весь вопрос в том, что имени файла я не знаю, знаю только их кол-во и имею объект-коллекцию этих файлов...
  
Наверх
 
IP записан
 
Igor-bts
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 103
Зарегистрирован: 14. Июля 2006
Re: FileSystemObject: как получить элемент коллекции "Files"?
Ответ #8 - 24. Декабря 2008 :: 15:00
Печать  
в этой статье не стали решать вопрос с перебором коллекции, а
http://www.script-coding.info/MSScriptControl.html
  
Наверх
ICQ  
IP записан
 
tvm
Junior Member
**
Отсутствует


aka slavka

Сообщений: 68
Местоположение: Москва
Зарегистрирован: 15. Июня 2006
Пол: Мужской
Re: FileSystemObject: как получить элемент коллекции "Files"?
Ответ #9 - 24. Декабря 2008 :: 15:01
Печать  
про 1С и  msscriptcontrol читать http://script-coding.info/MSScriptControl.html
  
Наверх
 
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: FileSystemObject: как получить элемент коллекции "Files"?
Ответ #10 - 24. Декабря 2008 :: 15:36
Печать  
Попробовал поковырять методику передачи в скрипт объектов 1С (см. http://www.1cpp.ru/forum/YaBB.pl?num=1205930698/),
но че то метод "Сериализовать" работает крайне нестабильно, поэтому похоже действительно придется передавать коллекции как строки, разделенные символами перевода строки...
  
Наверх
 
IP записан
 
Alex_Bob
Full Member
***
Отсутствует



Сообщений: 136
Местоположение: Липецк
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: FileSystemObject: как получить элемент коллекции "Files"?
Ответ #11 - 25. Декабря 2008 :: 14:02
Печать  
Маленький класс - обертка объекта Enumerator из JScript:
Код
Выбрать все
//#class Enumerator=Enumerator@MD
//#{
//#};
var scr;
//-----------------------------------------------
Function This(Cont) Return Cont; EndFunction
//-----------------------------------------------
Procedure Constructor()  

EndProcedure //Конструктор
//-----------------------------------------------
Procedure Init(_Collection) Export
	scr=CreateObject("MSScriptControl.ScriptControl");
	scr.Language="JScript";
	scr.AddObject("coll",_Collection);
	scr.AddObject("e",scr.Eval("new Enumerator(coll)"));
	Collection=_Collection;
EndProcedure
//-----------------------------------------------
Function atEnd() Export
	Return scr.Eval("e.atEnd()");
EndFunction
//-----------------------------------------------
Function moveNext() Export  
	Return scr.Eval("e.moveNext()");
EndFunction	              
//-----------------------------------------------
Function moveFirst() Export  
	Return scr.Eval("e.moveFirst()");
EndFunction  
//-----------------------------------------------
Function item() Export  
	Return scr.Eval("e.item()");
EndFunction	               



Использование:
Код
Выбрать все
FSO=CreateObject("Scripting.FileSystemObject");
e=СоздатьОбъект("Enumerator");
Folder = FSO.GetFolder(КаталогИБ());
e.Init(Folder.Files);
//Перебор коллекции Files
Пока e.atEnd()<>-1 Цикл
	Сообщить(e.item().Name);  // e.item() содержит объект File
	e.moveNext();
КонецЦикла;	 

« Последняя редакция: 26. Декабря 2008 :: 11:37 - Alex_Bob »  

Необходимо время, чтобы восстановить хаос. (с) Дж. Буш (младший)
Наверх
 
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: FileSystemObject: как получить элемент коллекции "Files"?
Ответ #12 - 25. Декабря 2008 :: 15:11
Печать  
Итератор собственными руками? Похвально, но вещь очень хрупкая.
  
Наверх
IP записан
 
EugenVitla
Junior Member
**
Отсутствует


школьнег

Сообщений: 82
Местоположение: Москва
Зарегистрирован: 21. Марта 2008
Пол: Мужской
Re: FileSystemObject: как получить элемент коллекции "Files"?
Ответ #13 - 25. Декабря 2008 :: 18:00
Печать  
эмм.. а почему хрупкая? где нагнуться может?
  
Наверх
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: FileSystemObject: как получить элемент коллекции "Files"?
Ответ #14 - 26. Декабря 2008 :: 14:05
Печать  
спасибо, попробую Улыбка
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать