![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Скрытый поиск по маске с копированием [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