Простенькая, но очень полезная ф-я получения списка файлов 
	   
	     | 
   
 
	
		| Предыдущая тема :: Следующая тема   | 
	 
	
	
		| Автор | 
		Сообщение | 
	 
	
		ГлСП Профи
 
  Вступление в Клуб: 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. | 
			 
		  | 
	 
	
		  | 
	 
	
		 | 
	 
 
  
	 
	    
	   | 
	
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
  | 
   
 
		 |