• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

работа с файлами *.xls

  • Автор темы Stim
  • Дата начала
S

Stim

Никак не могу найти решение своей задачи, если у кого-нибудь есть желание и возможность, то помогите составить алгоритм/программу для открытия из заданого каталога всех файлов с заданым расширением.
 
Z

Zab

Алгоритм:
1.Начало
2.Получаем очередной файл
3.Если файл получен, идем на п.4.
иначе на п.5
4.Если расширение = заданному, открываем файл
иначе идем к п.2
5.Конец
 
Z

Zab

Код:
ПроцедураОткрытьФайлы(Путь, Маска=)
ИмяФайла=ФС.НайтиПервыйФайл(Путь+Маска); 
Пока Сокрлп(ИмяФайла)<>"" Цикл
ИмяФайла=ФС.НайтиСледующийФайл();
Если (ИмяФайла<>"") И (ИмяФайла<>".") И (ИмяФайла<>"..") Тогда 
ФС.АтрибутыФайла(Путь+ИмяФайла,,АтрибФайла,,,,); 
АтрибФайла=Сред(АтрибФайла,4,1); 
Если (АтрибФайла<>"1") тогда
Если (Прав(ИмяФайла,4)=".xls") тогда	 
ПутькФайлу=Путь+ИмяФайла;
ИмяФайла=Лев(ИмяФайла,СтрДлина(ИмяФайла)-4);					
// Выполняем действия по открытию файла
КонецЕсли;	
КонецЕсли;
КонецЕсли;	
КонецЦикла;
Код не мой, думаю, можно написать оптимальнее, но работает. Надеюсь поможет.
И ты перестанешь флудить во всех ветках форума...
 
S

Stim

Ура... щас попробую интегрировать это в мою программу. З.ы я тоже надеюсь поможет, а флуда небыло, был оффтоп, за что награжден уже предупреждением. Спасибо что помог.
 
S

Stim

ммм...так 1ый же файл не будет читаться ??
ИмяФайла=ФС.НайтиПервыйФайл(Путь+Маска);
Пока Сокрлп(ИмяФайла)<>"" Цикл
ИмяФайла=ФС.НайтиСледующийФайл();
т.к в цикле сразу стоит найтиследфайл.
так будет правильно
Код:
	ПроцедураОткрытьФайлы(Путь, Маска=)
ИмяФайла=ФС.НайтиПервыйФайл(Путь+Маска); 
Пока Сокрлп(ИмяФайла)<>"" Цикл
Если (ИмяФайла<>"") И (ИмяФайла<>".") И (ИмяФайла<>"..") и 
(ИмяФайла=ФС.НайтиПервыйФайл(Путь+Маска)) тогда
ФС.АтрибутыФайла(Путь+ИмяФайла,,АтрибФайла,,,,); 
АтрибФайла=Сред(АтрибФайла,4,1); 
Если (АтрибФайла<>"1") тогда
Если (Прав(ИмяФайла,4)=".xls") тогда	 
ПутькФайлу=Путь+ИмяФайла;
ИмяФайла=Лев(ИмяФайла,СтрДлина(ИмяФайла)-4); 
// Выполняем действия по открытию файла
КонецЕсли;	
КонецЕсли;
иначе
ИмяФайла=ФС.НайтиСледующийФайл();
если (ИмяФайла<>"") И (ИмяФайла<>".") И (ИмяФайла<>"..") тогда
ФС.АтрибутыФайла(Путь+ИмяФайла,,АтрибФайла,,,,); 
АтрибФайла=Сред(АтрибФайла,4,1); 
Если (АтрибФайла<>"1") тогда
Если (Прав(ИмяФайла,4)=".xls") тогда	 
ПутькФайлу=Путь+ИмяФайла;
ИмяФайла=Лев(ИмяФайла,СтрДлина(ИмяФайла)-4); 
// Выполняем действия по открытию файла

КонецЕсли;	
КонецЕсли;
КонецЕсли;
конецЦикла;
ммм.да, некрасиво получилось, но надеюсь читабельно. :blink:
АтрибФайла=Сред(АтрибФайла,4,1);
Если (АтрибФайла<>"1") тогда
зачем это нужно можешь пояснить???
 
Z

Zab

ммм...так 1ый же файл не будет читаться ??
ИмяФайла=ФС.НайтиПервыйФайл(Путь+Маска);
Пока Сокрлп(ИмяФайла)<>"" Цикл
ИмяФайла=ФС.НайтиСледующийФайл();
т.к в цикле сразу стоит найтиследфайл.
так будет правильно
А это не важно, т.к. первый файл это ".". А нам он не нужен.
Хочешь, чтоб было правильнее, опусти получение следующего файла в конец цикла. :blink:
зачем это нужно можешь пояснить???
Чтобы не брать каталоги
Согласен, что исходный код для тебя не оптимален, я всего-навсего нарезал тебе куски исходника, с несклоько большей функциональностью. Но ты что-то странное натворил ;)
Извини, не вникал сильно в твой код, но, ИМХО, он нерабочий, т.к. цикл будет вечным.
ты постоянно получаешь первый файл.
 
S

Stim

да чото намудрил... опустить в конец мудрое решение )))) сэнк ю еще раз
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!