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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.01.2010, 14:57   #1
[MoNAMur]
читер
Форумчанин
 
Аватар для [MoNAMur]
 
Регистрация: 05.10.2009
Сообщений: 150
Вопрос I/O error 123 при поиске файлов

процедура поиска
Код:
procedure TForm1.findmp3;  
var
   searchResult : TSearchRec;
   dir_name : string;
begin
try
  if FindFirst('*.mp3', faAnyFile, searchResult) = 0 then
  begin
    repeat
          GetDir(0, dir_name);
          memo1.Lines.Add(dir_name + '\' + searchResult.Name);
    until FindNext(searchResult) <> 0;
  end;
  if FindFirst('*', faAnyFile, searchResult) = 0 then
          repeat
              if (searchResult.Attr and faDirectory) = faDirectory then
                    if (searchResult.Name[1] <> '.') and (searchResult.Name <> 'System Volume Information') then
                       begin
                         ChDir(searchResult.Name);
                         findmp3;
                         ChDir('..');
                       end;
          until FindNext(searchResult) <> 0;
except
FindClose(searchResult);
end;
end;
а так запускаю поиск
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
   ld: DWORD;
   i: integer;
   drivechar : array [0..25] of string;
   k: integer;   
begin
k := 0;
ld := GetLogicalDrives;
for i := 2 to 25 do
  begin
    if (ld and (1 shl i)) <> 0 then
      begin
      if (GetDriveType(PChar(Char(Ord('A') + i) + ':\')) = DRIVE_FIXED) or (GetDriveType(PChar(Char(Ord('A') + i) + ':\')) = DRIVE_REMOVABLE)
      then begin
           drivechar[i] := Char(Ord('A') + i) + ':\';
           k := k + 1 ;
           end;
      end;
  end;


/// ниже переходим на каждый найденный диск,занесенный в массив drivechar и выполняем поиск
while k >= 0 do
begin
memo1.lines.add(drivechar[k]);
ChDir(drivechar[k]);
findmp3;
k := k - 1;
end;
end;
и все бы ничего, ищет, заносит пути к найденным файлам в memo. но через некоторое время происходит ошибка "I/O error 123". Файлов mp3 на компьютере около 10000, находит примерно 5600 и появляется ошибка...

почему происходит ошибка? как сделать так чтобы корректно работало?
$me = $me == $me ? $me : $me;
[MoNAMur] вне форума Ответить с цитированием
Старый 19.01.2010, 15:11   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Oшибка 123 = ERROR_INVALID_NAME (The filename, directory name, or volume label syntax is incorrect) означает, что имя файла, или каталога, или буквы диска задано неверно.
Кому, как не вам, знать точное место возникновения ошибки?
mihali4 вне форума Ответить с цитированием
Старый 19.01.2010, 15:15   #3
[MoNAMur]
читер
Форумчанин
 
Аватар для [MoNAMur]
 
Регистрация: 05.10.2009
Сообщений: 150
По умолчанию

хммм. спасибо за пищу для ума )))

посмотрел что в массив заносится. так там первая строка пустая, потом имена дисков C, D, пустая строка, S и еще 2 пустые строки...

быть может из-за этого... ушел размышлять.
$me = $me == $me ? $me : $me;
[MoNAMur] вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ошибка при поиске текста в файле с настройками _Mickey_ Помощь студентам 0 29.12.2009 22:11
Учетность регистра при поиске данных Proxx-asb Общие вопросы Delphi 4 28.05.2009 13:12
Приложение которое выводит список файлов текущего каталога и при клике на любом из файлов откроет его. LimanSSk Общие вопросы Delphi 2 18.05.2009 16:03
при поиске по базе выдает ошибку - Пропущен оператор в выражении frai БД в Delphi 1 09.11.2007 23:01