CftClub.ru
Клуб специалистов ЦФТ-Банк

Простенькая, но очень полезная ф-я получения списка файлов

 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Справочник PL/PLUS: Функции, примеры, приёмы
Предыдущая тема :: Следующая тема  
Автор Сообщение
ГлСП
Профи


Вступление в Клуб: 20.09.2007
СообщениеПт Май 21, 2010 12:48   Простенькая, но очень полезная ф-я получения списка файлов Ответить с цитатой
Полезность: 3
До этого получал список файлов в строке , потом парсил его, и получал список файлов. Сегодня окончательно достало , и сделал библиотеку в RUNTIME для всяких полезных штучек.

Первой туда попала функция для получения массива файлов из каталога

Вот ее исходник

Код:

------------------------------------------------------------
-- Получить массив с файлами из каталога
------------------------------------------------------------
function getFileList(p_path String, p_mask String default null) return [ CONSTANT ].STRING_TABLE
is
fList    [ CONSTANT ].STRING_TABLE;
iDir   integer;
rc      integer;

name   string(256);
attrs   string(30);
uowner   string(30);
gowner   string(30);
mdate   string(30);
fsize   integer;
Begin
   --открыть каталог
   iDir:=stdio.opendir(p_path,p_mask,1);
   
   if iDir is null or iDir=0 then
      pragma error('Ошибка открытия каталога <'||p_path||'>: '||stdio.error_message(iDir));
   end if;

   
   Loop
      rc := stdio.readdir(iDir,name,attrs,uowner,gowner,mdate,fsize);

      if rc=0 then
         exit;
      elsif rc<0 then
         pragma error('Ошибка чтения каталога <'||p_path||'>: '||to_char(rc));
      end if;

      fList(fList.count+1)   :=   name;


   End Loop;
   
   stdio.closedir(iDir);
   
   
   return fList;
   
End;




вот примерчик как ей пользоваться. Выдрал из готового куска программы

Код:

flist   [ CONSTANT ].STRING_TABLE;
Begin
   
   
   
   --получить список файлов в каталоге
   flist   :=   [ MY_LIB ].getFileList(dir_in);
   
   
   for i In 1..flist.count Loop
debug('flist[i]=>'||flist(i));
   End Loop;


   
   
End;




Понимаю, что Омерики не открыл, но тем не менее, вдруг кому и пригодится.

Еще хотел сделать , чтобы в массиве возвращались не только имя, но и атрибуты, но т.к. пока не приперло, то лениво. Хотя на доработки ушло бы минут 5.
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Справочник PL/PLUS: Функции, примеры, приёмы Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Рейтинг@Mail.ru