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