Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.11.2007, 17:03   #1
ZYRGiX
Пользователь
 
Аватар для ZYRGiX
 
Регистрация: 24.07.2007
Сообщений: 17
По умолчанию Скан диска

Подскажите пожалуйста, как будет выглядеть следующий код: сканируем диски (от A до Z), если найден файл с расширением .mp3, то копируем наш файл в ту директорию .
ZYRGiX вне форума Ответить с цитированием
Старый 12.11.2007, 20:13   #2
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

фунцкия поиска файла в папке, если не ничего не найдено, то результат пустая строка.
Код:
function FindFile(const DirPath: String;FN:string):string;
var
  Status: THandle;
  FindData: TWin32FindData;
begin
  Result:='';

  Status := FindFirstFile(PChar(DirPath + '*.*'), FindData);
  if Status=INVALID_HANDLE_VALUE then exit;
  repeat
   if (FindData.cFileName[0]='.') or (FindData.cFileName='..') then continue;
   if (FindData.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY)=FILE_ATTRIBUTE_DIRECTORY then
    begin
     result:=FindFile(DirPath + FindData.cFileName + '\', FN);
     if Result<>'' then exit;
    end;
   if (FindData.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY)<>FILE_ATTRIBUTE_DIRECTORY then
    if FN=FindData.cFileName then
     begin
      Result:=DirPath+FindData.cFileName;
      exit;
     end;
   Application.ProcessMessages;
  until not FindNextFile(Status, FindData);
  Windows.FindClose(Status);
end;
для поиска на всём диске укажи, например, С:\ (слеш в конце обязателен)
rpy3uH вне форума Ответить с цитированием
Старый 20.11.2007, 15:31   #3
ZYRGiX
Пользователь
 
Аватар для ZYRGiX
 
Регистрация: 24.07.2007
Сообщений: 17
По умолчанию

Как я понял, данный код будет искать файл только по одному диску, в то время как мне надо искать файл во всех дискам (по всему венчестеру).
ZYRGiX вне форума Ответить с цитированием
Старый 20.11.2007, 17:50   #4
NoName_emaNoN
Форумчанин
 
Аватар для NoName_emaNoN
 
Регистрация: 15.11.2007
Сообщений: 229
По умолчанию

Просто используй компонент DriveComboBox,
оттуда вытащи все имена дисков, потом сканируй.
Компьютер не подчиняется законам физики: глюки возникают из ниоткуда, файлы исчезают в никуда, а вес измеряется в метрах.
NoName_emaNoN вне форума Ответить с цитированием
Старый 20.11.2007, 19:48   #5
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

получение списка дисков
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  i: integer;
  LogDrives: set of 0..25;
  str:string;
begin
  integer(LogDrives) := GetLogicalDrives;
  for i := 0 to 25 do
   if (i in LogDrives) then
    begin
     str:= chr(i + 65)+':';
     if GetDriveType(pchar(str))=DRIVE_FIXED then
      ListBox1.Items.Add(str);
    end;
end;
rpy3uH вне форума Ответить с цитированием
Старый 18.12.2007, 16:52   #6
execom
Редкий тунеядец
Форумчанин
 
Аватар для execom
 
Регистрация: 29.10.2006
Сообщений: 595
По умолчанию

вщт мой вариант получения дисков..
Код:
Procedure Disks;
var
   i1 : integer;
   i2 : integer;
   i3 : integer;
   i4 : integer;
  Buf : array [0..95] of char;
begin
GetLogicalDriveStrings(96,Buf);
//Получаем строку дисков
for i1:=0 to 25 do
if Buf[i1*4+2]<>#92 then break;
//Получаем количество дисков
if Buf[0]=#65 then i4:=1 else i4:=0;
//Если первый локал - A то смотрим начиная со второго
for i2:=i4 to i1-1 do //Перебор дисков
  begin
    i3:=GetDriveType(@Buf[i2*4]);//Определяем тип диска
    if  (i3<>0)//Если не диск с неопределённым типом
    and (i3<>1)//и не диск с отсутствующим корневым каталогом
    and (i3<>5)//и не CD-ROM то..
    then FindFile(@Buf[i2*4]);//Поиск на этом диске
  end;
end;
execom вне форума Ответить с цитированием
Старый 29.12.2007, 20:37   #7
SunKnight
Участник клуба Подтвердите свой е-майл
 
Аватар для SunKnight
 
Регистрация: 14.12.2007
Сообщений: 1,434
По умолчанию

function FindFile(const DirPath: String;FN:string):string;
FN:string - немогу понять, что это за параметр для поиска?
Проповедую design patterns, верую в MVC, доверяю eXtrime programming.
SunKnight вне форума Ответить с цитированием
Старый 30.12.2007, 14:05   #8
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

ну это и есть имя файла который ты хочешь найти
rpy3uH вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Защита диска от копирования NoName_emaNoN Безопасность, Шифрование 15 28.02.2011 19:59
нет диска в устройстве }{@TT@BЬ)Ч Операционные системы общие вопросы 7 20.01.2009 20:18
Чем отличается скан-код от виртуального кода клавиши? The_Darkness Помощь студентам 2 18.07.2008 17:01
Дефрагментация диска Viteef Софт 8 06.12.2007 23:33