Страница 1 из 3
Усовершенствовать скрипт
Добавлено: 25 авг 2005, 21:29
Duncon
Народ есть такой скрипт ищущий в папке наличие определенных файлов
Код: Выделить всё
procedure Dir(Path: string; FileList: TStrings);
var
SR: TSearchRec;
begin
if FindFirst(Path + '*.bmp', faAnyFile, SR) = 0 then
begin
repeat
if (SR.Attr <> faDirectory) then
begin
FileList.Add(SR.Name);
end;
until FindNext(SR) <> 0;
FindClose(SR);
end;
//вызов ее
Dir('foto\', Memo1.lines);
Дабы пропустить другие файлы я просто повторил if несколько раз, но это криво. Вот, как бы его улучшить чтоб был типа список из пропускаемых файлов и скрипт перебирал бы его, а не конкретно заданное, решение где-то рядом, но допереть не могу..
Заранее благодарен Duncon
Добавлено: 26 авг 2005, 00:39
Игорь Акопян
а эти пропускаемые файлы удовлетворяют твоему условию? т.е. тоже BMP?
Добавлено: 26 авг 2005, 11:33
Duncon
Нет остальные фильтры - это *.gif, *.jpg итп
Добавлено: 29 авг 2005, 08:24
LAngel
Дабы пропустить другие файлы я просто повторил if несколько раз, но это криво. Вот, как бы его улучшить чтоб был типа список из пропускаемых файлов и скрипт перебирал бы его, а не конкретно заданное, решение где-то рядом, но допереть не могу..
Пропустить? да при маске *.bmp он их и не будет брать....
может быть наоборот включить? тогда бери при FindFirst маску *.*, а в цикле
проверяй SR.Name на соответствие типу. например, с помощью ExtractFileExt()
Добавлено: 29 авг 2005, 09:23
Duncon
Уважаемый я имел ввиду, что повторяю цикл с разными фильтрами я показал только один из них.
А хочу, чтоб все было в одном кусочке кода который бы перебирал маски...
Добавлено: 29 авг 2005, 09:39
LAngel
Тогда, Уважаемый, смотри моё предыдущее сообщение, или пример нужен?
Добавлено: 29 авг 2005, 14:25
Duncon
LAngel писал(а):Тогда, Уважаемый, смотри моё предыдущее сообщение, или пример нужен?
Уважаемый,
- (Я не пытался оскорбить либо как-то наехать......)
Да хотелось бы наглядно, для полного понимания происходящего..
Добавлено: 29 авг 2005, 18:36
Игорь Акопян
Можно завести список (массив) и этот цикел прогонять подставляя его элементы...
Кстати,
'foto\'
Какая-то из функций для работы с файлами добавляет в конец слэш при необходимости...
Добавлено: 30 авг 2005, 08:57
Duncon
В данном случае 'foto\' это то место где ищем файлы.... Это не суть терзаний..
Меня больше напрягает вот эта строчка FindFirst(Path + '*.bmp', faAnyFile, SR) = 0 then
а точнее Path + '*.bmp' я хочу чтоб здесь можно было подставить несколько фильтров '*.bmp',' *.jpg' итд
Добавлено: 30 авг 2005, 11:07
LAngel
Код: Выделить всё
procedure Dir(Path: string; FileList: TStrings);
var
SR: TSearchRec;
Ext: String;
begin
if FindFirst(Path + '*.*', faAnyFile, SR) = 0 then
begin
repeat
if (SR.Attr <> faDirectory) then
begin
Ext := UpperCase(ExtractFileExt(SR.Name));
if (Ext = '.BMP') or (Ext = '.JPG') or (Ext = '.JPEG') or (Ext = '.GIF')
then FileList.Add(SR.Name);
end;
until FindNext(SR) <> 0;
FindClose(SR);
end;
end;