Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Синтаксис
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 29.05.2013, 16:01
Аватар для lekssp
lekssp lekssp вне форума
Новичок
 
Регистрация: 25.04.2013
Сообщения: 54
Версия Delphi: 7
Репутация: 10
Стрелка Поиск файла + ProgressBar

Помогите плз!
Надо осуществить поиск файла с заполнением прогрессбара.
Пробовал вот так:
Код:
function GetFileCount(Dir: string):Int64;
var
  fs: TSearchRec;
  files:Int64;
begin
  files:=0;
  if FindFirst(Dir+'\*.*', faAnyFile - faVolumeID, fs) = 0
    then
    repeat
      if fs.Attr=faDirectory then  Inc(files, GetFileCount(dir+'\'+fs.Name));
      inc(files);
    until
      FindNext(fs) <> 0;
  FindClose(fs);
  result:=files;
end;

function OnFind(s:string):Boolean;
begin
 ShowMessage(s);
end;

function FullDirectoryFind(StartDir: string; FindName:string; b:Byte): Boolean;
var
  SR: TSearchRec;
  I: Integer;
  i1:Int64;
begin
  ShowMessage(StartDir+' '+inttostr(GetFileCount(StartDir)));
  if b=1 then begin
  Form1.ProgressBar1.Max:=GetFileCount(StartDir);
  Form1.ProgressBar1.Position:=0;
  end;
  // ShowMessage('1');
  //ShowMessage(IntToStr(Form1.ProgressBar1.max));
  Result := False;
  StartDir := IncludeTrailingBackslash(StartDir);
  if not DirectoryExists(StartDir) then
    Exit;

  I := FindFirst(StartDir + '*', faAnyFile, SR);
  try
    while I = 0 do
    begin
      if (SR.Name <> '') and (SR.Name <> '.') and (SR.Name <> '..') then
      begin
        if SR.Attr = faDirectory then  begin
          if SR.Name=FindName then OnFind(AddStr(StartDir, SR.Name));
          FullDirectoryFind(StartDir+sr.Name, FindName, 0);
        end else   begin
          if SR.Name=FindName then OnFind(AddStr(StartDir, SR.Name))
        else
          Result := True;
      end;
      I := FindNext(SR);
      Form1.ProgressBar1.Position:=Form1.ProgressBar1.Position+1;
    end;
    end;
  finally
    SysUtils.FindClose(SR);
  end;
  if b=1 then
  Form1.ProgressBar1.Position:=0;
end;
, но прога виснет
Помогите пожалуйтса!
__________________
Жизнь - игра. Сюжет тупой, зато графика офигенная
Ответить с цитированием
  #2  
Старый 29.05.2013, 17:30
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Application.ProcessMessages воткни в цикле.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #3  
Старый 29.05.2013, 22:02
Аватар для lekssp
lekssp lekssp вне форума
Новичок
 
Регистрация: 25.04.2013
Сообщения: 54
Версия Delphi: 7
Репутация: 10
По умолчанию

в каком ?
__________________
Жизнь - игра. Сюжет тупой, зато графика офигенная
Ответить с цитированием
  #4  
Старый 29.05.2013, 22:44
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

после этой строчки:
Код:
 Form1.ProgressBar1.Position:=Form1.ProgressBar1.Position+1;
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
Этот пользователь сказал Спасибо Страдалецъ за это полезное сообщение:
lekssp (30.05.2013)
  #5  
Старый 30.05.2013, 18:16
Аватар для lekssp
lekssp lekssp вне форума
Новичок
 
Регистрация: 25.04.2013
Сообщения: 54
Версия Delphi: 7
Репутация: 10
Стрелка

всё равно висит.
и он висит именно на определении кол-ва файлов в каталоге.
Может кто подскажет функцию получше. А если нет, то как её исправить ???
__________________
Жизнь - игра. Сюжет тупой, зато графика офигенная
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 02:20.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter