Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Скрытый поиск по маске с копированием [D6, Win95/98, WinME, NT4, Win2k, WinXP]


CoolMan ©   (2004-10-09 17:58:00) 

Доброго времени суток, уважаемые мастера!

Вот что интересует:
Есть файл 1.txt. В первой строчке указаны маски для поиска разделенные запятой (ПРИМЕР: *.txt, *.html и т.д). Во второй строке адрес деректории куда будут копироваться все найденые файлы

ВОТ ЧТО НАДО: прога запускаится. Без всяких вопросов начинает поиск по всем локальным дискам (+ А)(но не cd-rom) беря переменные из файла 1.txt, и если находит файл, удовлетворяющий одну из масок, указаных в первой строке файла копирует его в директорию указаную во второй строке. После пороверки всех дисков и копирования файлов выводит сообщение что поиск завершен.

Заранее Вам благодарен!!!

PS: пожалуйста если есть возможность - полный код


begin...end   (2004-10-09 19:00:00) [1]

function GetDrives: String;
var
 Ch: Char;
begin
 for Ch := 'A' to 'Z' do
   if GetDriveType(PChar(Ch + ':\')) in [DRIVE_FIXED, DRIVE_REMOVABLE] then
     Result := Result + Ch;
end;


kaZaNoVa   (2004-10-09 18:55:00) [2]

CoolMan ©   (09.10.04 18:43) [5]
все мы когда-то были новичками ;)))


Defunct   (2004-10-09 18:48:00) [3]

[4]

на вкладке Win3.1 есть компонент TDriveComboBox, который делает тоже самое без лишних телодвижений ;>


CoolMan   (2004-10-09 18:43:00) [4]

2 kaZaNoVa

И опять мой респект!
Спасибо за терпимость и помощь!


kaZaNoVa   (2004-10-09 18:40:00) [5]

CoolMan ©   (09.10.04 17:58)
боюсь полный код тут никто не выложит ...
//всё-таки задача хоть и простая, но не тривиальная ;))
- получение списка дисков:

procedure TForm1.Button1Click(Sender: TObject);
function GetDriveAll:string;
Var
ld,i:DWORD;
info:string;
Begin
info:='';
ld := GetLogicalDrives;
for i := 0 to 25 do
begin
if (ld and (1 shl i)) <> 0 then begin
if GetDriveType(PChar(Char(Ord('A') + i) + ':\'))=DRIVE_FIXED then
info:=info+Char(Ord('A') + i);
if GetDriveType(PChar(Char(Ord('A') + i) + ':\'))=DRIVE_REMOVABLE then
info:=info+Char(Ord('A') + i);
//if GetDriveType(PChar(Char(Ord('A') + i) + ':\'))=DRIVE_CDROM then
//info:=info+Char(Ord('A') + i);
if GetDriveType(PChar(Char(Ord('A') + i) + ':\'))=DRIVE_REMOTE then
info:=info+Char(Ord('A') + i);
if GetDriveType(PChar(Char(Ord('A') + i) + ':\'))=DRIVE_RAMDISK then
info:=info+Char(Ord('A') + i);  end;
end;
GetDriveAll:=info;
end;
begin
form1.caption:=GetDriveAll;
end;


а дальше рекурсия поиска с копированием .. )


Defunct   (2004-10-09 18:27:00) [6]

Я начинающий - так что если можно зарплату на год вперед.


CoolMan   (2004-10-09 18:04:00) [7]

2 Семен Сорокин

:) можно и *.*

Я начинающий - так что если можно полный код.
СПАСИБО


Семен Сорокин   (2004-10-09 18:01:00) [8]

а если 1.txt содержит *.* ? :))
по сабжу:
парсер строки + FindFirst, FindNext, FindClose + CopyFile


Наверх

Титульная страница Поиск, карта сайта Написать письмо