Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> FindFirst, FindNext,FindClose, файлы во вложенных каталогах 
:(
    Опции темы
Slawanix
  Дата 31.7.2004, 03:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 29.7.2004
Где: г. Великие Луки

Репутация: нет
Всего: 1



Хочу дописать давно заброшенный синхронизатор файлов, но пока не могу добиться, чтобы с FindFirst, FindNext,FindClose найти файлы не только в прописанной папке, но и во вложенных в нее каталогах.


biggrin.gif Как могею так и юзаю
--------------------
моск кипит    
PM MAIL WWW   Вверх
December
Дата 31.7.2004, 05:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Antitheorist
****


Профиль
Группа: Участник
Сообщений: 4423
Регистрация: 14.8.2002
Где: Харьков

Репутация: 8
Всего: 57



Тема не менее 5 раз поднималась... Только в этом разделе...


--------------------
Для друзей с винграда - скидки на разработку сайтов
PM MAIL WWW ICQ   Вверх
Guest
Дата 31.7.2004, 07:55 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Вот пример рекурсивного удаления каталога. Отсюда и копай....
Код

Procedure deldir(dir : String; mask : string);
Var
Found  : integer;
SearchRec : TSearchRec;
f,fdir:textfile;
begin
 If length(dir)<4 then exit;
 If dir[length(dir)]<>'\' then dir:=dir+'\';
 Found := FindFirst(dir+'*.*', faAnyFile, SearchRec);
 while Found = 0 do
 begin
  if (SearchRec.Name<>'.') and (SearchRec.Name<>'..') then
  begin
 If fileexists(dir+SearchRec.Name) and extinmask(mask,getext(dir+SearchRec.Name)) then begin
 try
 Filesetattr(dir+SearchRec.Name,0);
 Assignfile(f,dir+SearchRec.Name);
 {$I-}
 erase(f);
 {$I+}
 except;
 end;
 end else If directoryexists(dir+SearchRec.Name) then deldir(dir+SearchRec.Name, mask);
  end;
   Found := sysutils.FindNext(SearchRec);
 end;
 FindClose(SearchRec);
 try
removedir(dir);
 except
 end;
end;

  Вверх
Slawanix
Дата 1.8.2004, 01:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 29.7.2004
Где: г. Великие Луки

Репутация: нет
Всего: 1



Цитата(December @ 31.7.2004, 05:15)
Тема не менее 5 раз поднималась... Только в этом разделе...

Прошу прощения за невнимательность, и спасибо за подсказку.

Кто ищет, тот всегда... ищет adv/51.gif adv/51.gif
Добавлено @ 01:55
Цитата(Guest @ 31.7.2004, 07:55)
Вот пример рекурсивного удаления каталога. Отсюда и копай....

Спасибо огроменное незарегестрированному парню, хотелось бы высказать благодарность лично, но за неимением и не могением.... adv/49.gif
--------------------
моск кипит    
PM MAIL WWW   Вверх
Vit
Дата 1.8.2004, 02:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207



Вообще-то эта тема в FAQ есть


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Slawanix
Дата 1.8.2004, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 29.7.2004
Где: г. Великие Луки

Репутация: нет
Всего: 1



Цитата(Vit @ 1.8.2004, 02:34)
Вообще-то эта тема в FAQ есть

Vit, спасибо, что снизошел с Чикагских небес и высот профи. Уже качаю! adv/iwashere.gif

Чем больше я узнаю, тем больше понимаю, что очень мало знаю notify.gif
--------------------
моск кипит    
PM MAIL WWW   Вверх
Slawanix
Дата 1.8.2004, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 29.7.2004
Где: г. Великие Луки

Репутация: нет
Всего: 1



Цитата(Guest @ 31.7.2004, 07:55)
Вот пример рекурсивного удаления каталога. Отсюда и копай....
Код

Procedure deldir(dir : String; mask : string);

Не совсем понимаю в коде назначение mask:string.
И еще компилятор ругается на extinmask и getext
Код
begin
 if (SearchRec.Name<>'.') and (SearchRec.Name<>'..') then
 begin
If fileexists(dir+SearchRec.Name) and extinmask(mask,getext(dir+SearchRec.Name)) then begin
(говорит: необъявленные переменные); Может быть какой-то модуль надо дополнительно подключить, хотя я видел подобное in SysUtils.pas.


Ка-а-а-а-ки-и-м ты-ы-ы бы-ы-ы-ыллл...... adv/idontnow.gif
--------------------
моск кипит    
PM MAIL WWW   Вверх
Illusion Dolphin
Дата 1.8.2004, 23:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1198
Регистрация: 3.5.2003

Репутация: 36
Всего: 63



Slawanix :
Этот гвест был я. Да, это дополнительные функции, просто к сути идеи они были не важны, но если надо, то даю:

Код

Function getext(Filename : string) : string;
var
 i,j:integer;
 s:string;
begin
j:=0;
For i:=length(filename) downto 1 do
begin
 If filename[i]='.' then
 begin
  j:=i;
  break;
 end;
 If filename[i]='\' then break;
end;
s:='';
If j<>0 then
begin
 s:=copy(filename,j+1,length(filename)-j);
 For i:=1 to length(s) do
 s[i]:=Upcase(s[i]);
end;
result:=s;
end;


function extinmask(mask : string; ext : string):boolean;
var i,j:integer;
begin
result:=false;
If mask='||' then
begin
 result:=true;
 exit;
end;
for i:=1 to length(mask) do
begin
 if mask[i]='|' then
 for j:=i to length(mask) do
 begin
  If mask[j]='|' then
  If (j-i-1>0) and (i+1<length(mask)) then
  if (upcaseall(copy(mask,i+1,j-i-1))<>'') and (upcaseall(copy(mask,i+1,j-i-1))=upcaseall(ext)) then
  begin
   result:=true;
   Break;
  end;
 end;
 If Result then Break;
end;
end;


маска - маска для удаления файлов. Если она равна '||', то удаляется всё, что можно, если, например, '|EXE|DLL|' - то экзэшники и библиотеки. Писал функции давно чисто для интереса.


--------------------
В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен.
Шифрование и организация фотографий - Photo Database 4.5
PM MAIL WWW ICQ   Вверх
Slawanix
Дата 2.8.2004, 02:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 29.7.2004
Где: г. Великие Луки

Репутация: нет
Всего: 1



Спасибо всем, кто отклинулся на эту тему, или, быть может хотел сделать это, Вы мне помогли.Как камень..... с души! inlove.gif
--------------------
моск кипит    
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0620 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.