Модуль "P2KFileManager" (часть 5) - GetFileList

Рубрика: Исходники
Среда, 21 апреля 2010 г.
Просмотров: 121
последняя версия: 3.0.9 build 961 beta
от 07 декабря 2007 г.
function TfrmP2KFileManager.GetFileList(var AMotoFileList: TMotoFileList; APatern: string): boolean;
var
  c: byte;
  j: integer;
  res: boolean;
  zMotoFileList: TMotoFileList;
  pos: integer;
  frmProgress: TfrmProgress;
begin
  result:= false;
  if not Form1.IsP2KConnected then exit;

  //AMotoFileList:= nil;
  TotalCnt:= 0;
      frmProgress:= TfrmProgress.Create(Self);
      frmProgress.GradientLabel1.Visible:= true;
      frmProgress.GradientLabel2.Visible:= true;
      frmProgress.AdvProgressBar1.Visible:= true;
      frmProgress.AdvProgressBar2.Visible:= false;      
      frmProgress.GradientLabel1.Caption:= p2k_fm_pw_text01;
      frmProgress.AdvProgressBar1.Value:= 0;
      frmProgress.AdvProgressBar2.Value:= 0;
      frmProgress.AdvProgressBar2.MaxValue:= TotalCnt;
      frmProgress.Show;
      Application.ProcessMessages;  
  try
    {***} Logger('*** Получение списка файлов ***');
    if APatern = '' then
      begin
       { case iReadDisks of
          0 : begin  //0 - все доступные,
       }
                for c:=0 to High(arrDrives) do
                  begin
                      {***} Logger('*** Маска для поиска ' + arrDrives[c].Name + '/*');
                      arrDrives[c].CntFiles:= P2K.GetFilesCount(arrDrives[c].Name + '/*');
                      {***} Logger('*** Кол-во файлов найденных по маске ' + arrDrives[c].Name + '/*' + ' = ' + inttostr(arrDrives[c].CntFiles));
                      TotalCnt:= TotalCnt + arrDrives[c].CntFiles;
                  end;
      end
      else
      begin
            {***} Logger('*** Маска для поиска ' + APatern);
            TotalCnt:= P2K.GetFilesCount(APatern);
            {***} Logger('*** Кол-во файлов найденных по маске ' + APatern + ' = ' + inttostr(TotalCnt));
            for j:=0 to High(arrDrives) do arrDrives[j].CntFiles:= TotalCnt;
      end;
  except
  end;
      frmProgress.GradientLabel1.Visible:= true;
      frmProgress.GradientLabel2.Visible:= true;
      frmProgress.AdvProgressBar1.Visible:= true;
      frmProgress.GradientLabel1.Caption:= p2k_fm_pw_text01;
      frmProgress.AdvProgressBar1.Value:= 0;
      frmProgress.AdvProgressBar2.Value:= 0;
      frmProgress.AdvProgressBar2.MaxValue:= TotalCnt;
      
  if TotalCnt > 0 then
    begin
      //***
      j:= High(arrDrives);
      if APatern <> '' then j:= 0; 
      if j > 0 then frmProgress.AdvProgressBar2.Visible:= true
               else frmProgress.AdvProgressBar2.Visible:= false;
      Form1.Enabled:= false;
      Application.ProcessMessages;
      //***
      if xMotoFiles <> nil then xMotoFiles:= nil;
      SetLength(xMotoFiles, TotalCnt);
      pos:= 0;
      try
        if APatern = ''
        then begin
                for c:=0 to High(arrDrives) do
                  begin
                    frmProgress.AdvProgressBar1.MaxValue:= arrDrives[c].CntFiles;
                    frmProgress.GradientLabel2.Caption:= Format(p2k_fm_pw_text02,[arrDrives[c].Name]);
                    SetLength(zMotoFileList, arrDrives[c].CntFiles);
                    frmProgress.AdvProgressBar1.Value:= 0;
                    Application.ProcessMessages;
                    arrDrives[c].CntFiles:= P2K.GetFilesCount(arrDrives[c].Name + '/*');
                    Application.ProcessMessages;
                    try
                      {***} Logger('*** Получение списка файлов для ' + arrDrives[c].Name + '/*');
                      res:= P2K.GetFileList(arrDrives[c].Name + '/*', arrDrives[c].CntFiles, zMotoFileList, TotalCnt, frmProgress);
                      frmProgress.AdvProgressBar1.Value:= 0;
                      Application.ProcessMessages;
                      if res then begin
                                    for j:= 0 to arrDrives[c].CntFiles-1 do
                                      begin
                                        xMotoFiles[pos]:=  zMotoFileList[j];
                                        //{***} Logger(zMotoFileList[j].Name);
                                        inc(pos);
                                      end;
                                    result:= res;
                                  end;
                    except
                    end;
                  end
             end
        else begin
               //zMotoFileList:= nil;
               SetLength(zMotoFileList, TotalCnt);
               //TotalCnt:= P2K.GetFilesCount(APatern);
              frmProgress.AdvProgressBar1.MaxValue:= TotalCnt;
              frmProgress.GradientLabel2.Caption:= Format(p2k_fm_pw_text03, [APatern]);
              //Application.ProcessMessages;
              try
                {***} Logger('*** Получение списка файлов для ' + APatern);
                res:= P2K.GetFileList(APatern, TotalCnt, zMotoFileList, TotalCnt, frmProgress);
                if res then begin
                              for j:= 0 to TotalCnt-1 do
                                begin
                                  xMotoFiles[pos]:=  zMotoFileList[j];
                                  {***} Logger(zMotoFileList[j].Name);
                                  inc(pos);
                                end;
                              result:= res;
                            end;
               except
               end;
             end;
      except
      end;
        //end;
    end;
      frmProgress.Free;
      Form1.Enabled:= true;
end;
Rambler's Top100