Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Чёкнутая процедура, Косит всех без разбора!  
:(
    Опции темы
microo10
  Дата 10.2.2013, 21:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 21.1.2012

Репутация: нет
Всего: нет



Не с того не с сего моя процедура рекурсивного обхода начала выдавать все файлы,даже не сравнивая маску...пару часов назад все работало,я не чего не менял :(
Процедура:
Код

procedure FindFiles(StartFolder, Mask: string; List: TStrings;
  ScanSubFolders: Boolean = True);
var
  SearchRec: TSearchRec;
  FindResult,Size: Integer;
  fileResult: string;
begin
  List.BeginUpdate;
  try
    StartFolder := IncludeTrailingBackslash(StartFolder);
    FindResult := FindFirst(StartFolder + '*.*', faAnyFile, SearchRec);
    try
      while FindResult = 0 do
        with SearchRec do
        begin
          if (Attr and faDirectory) <> 0 then
          begin
            if ScanSubFolders and (Name <> '.') and (Name <> '..') then
              FindFiles(StartFolder + Name, Mask, List, ScanSubFolders);
          end
          else
          begin
            if MatchesMask(Name, Mask) then
             fileResult:=(StartFolder + Name);
              List.Add(StartFolder + Name);
              Size_file:=size_file+GetFileSize(fileResult);
              Application.ProcessMessages();
          end;
          FindResult := FindNext(SearchRec);
        end;
    finally
      FindClose(SearchRec);
    end;
  finally
    List.EndUpdate;
  end;
    end;


Процедура вызова:
Код

procedure getInfo(strok:WideString);
var
direct,mack,kindi:string; kind,dd:boolean;
begin
direct:=copy(Strok,1,pos('|',Strok)-1); //директория->строка[i]
Delete(Strok,1,pos('|',Strok));
mack:=copy(Strok,1,pos('|',Strok)-1);
Delete(Strok,1,pos('|',Strok));
Kindi:=copy(Strok,1,pos('|',Strok)-1);
if kindi=('1') then
kind:=true else
kind:=false;
Showmessage(kindi);
FindFiles(direct, mack, Form1.LB1.items, kind);//ищем файлы
end;


Сам вызов:
Код

procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
begin
for i:= 0 to lb2.Items.Count-1 do // берем пути из lb2 и суем в процедуру парсинга :)
begin
getInfo(lb2.items[i]);
end;


Путь в lb2 выглядит следующим образом директория|маскаимени.маскарасширения|1 или 0|
Exmp:

C:\java|*.exe|1|


Помогите пожалуйста,я уже несколько часов ковыряюсь,а найти проблему не могу  smile 

Это сообщение отредактировал(а) microo10 - 10.2.2013, 21:53
PM MAIL   Вверх
DarkProg
Дата 10.2.2013, 21:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Законченный романтик
***


Профиль
Группа: Завсегдатай
Сообщений: 1784
Регистрация: 11.3.2009
Где: Земля

Репутация: 4
Всего: 19



Покажите место в процедуре, которое использует маску для фильтрации поиска?


Цитата(microo10 @  10.2.2013,  21:51 Найти цитируемый пост)
пару часов назад все работало,я не чего не менял :(

Видимо это происки скайнет )


--------------------
"И твоя голова всегда в ответе за то куда сядет твой зад..."

"Я студент - скажите с какого я ВУЗа..."

 smile  smile  smile 
PM MAIL   Вверх
Данкинг
Дата 10.2.2013, 22:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Наверное, надо разобраться, что там в переменной "mack" содержится.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
microo10
Дата 10.2.2013, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 21.1.2012

Репутация: нет
Всего: нет



Цитата(DarkProg @ 10.2.2013,  21:57)
Покажите место в процедуре, которое использует маску для фильтрации поиска?


Цитата(microo10 @  10.2.2013,  21:51 Найти цитируемый пост)
пару часов назад все работало,я не чего не менял :(

Видимо это происки скайнет )


Код

if MatchesMask(Name, Mask) then
             fileResult:=(StartFolder + Name);
              List.Add(StartFolder + Name);
              Size_file:=size_file+GetFileSize(fileResult);
              Application.ProcessMessages();
          end;



Тут по идее должна быть

Добавлено @ 22:07
Цитата(Данкинг @ 10.2.2013,  22:00)
Наверное, надо разобраться, что там в переменной "mack" содержится.

Даже не заметил что не так написал  smile ... не суть, в mack парсится *.exe

Это сообщение отредактировал(а) microo10 - 10.2.2013, 22:39
PM MAIL   Вверх
microo10
Дата 10.2.2013, 22:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 21.1.2012

Репутация: нет
Всего: нет



 Откуда у меня в процедуре взялось *.* !? smile 
DarkProg, был прав,это 100%  происки скайнет  smile 

Help ! Процедура теперь не может делать отбор по маске когда ScanSubFolders = 0  smile 

Это сообщение отредактировал(а) microo10 - 10.2.2013, 22:51
PM MAIL   Вверх
microo10
Дата 10.2.2013, 23:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 21.1.2012

Репутация: нет
Всего: нет



Нашел проблему самостоятельно...
Проблема была не в маске,а в:

Код

fileResult:=(StartFolder + Name);


Нельзя указывать переменную fileResult...не понял правда почему,но при исправлении на fResult все ок.

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0754 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.