Показать сообщение отдельно
  #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;
, но прога виснет
Помогите пожалуйтса!
__________________
Жизнь - игра. Сюжет тупой, зато графика офигенная
Ответить с цитированием