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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.07.2016, 15:08   #1
JapanStyle^^
 
Регистрация: 26.02.2013
Сообщений: 6
По умолчанию Создание в поиске файлов на ftp (Indy)

Всем доброго времени суток. Сделал программульку для поиска файлов заданного расширения на ресурсе. Однако анализ всех, порядка 125 тыс. файлов занимает довольно продолжительное время. Вычитал, что поможет решить задачу применение потоков. Пните, подскажите, укажите что-куда-чего-кому, ибо первый раз встречаюсь с таким.
Код:
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, OleCtrls, SHDocVw, HTTPApp, HTTPProd, MSHTML, ActiveX,
  IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP, IdFTP,Wininet, IdFTPCommon, IdFTPList,
  IdAntiFreezeBase, IdAntiFreeze;
 
type
  TForm1 = class(TForm)
    ListBox1: TListBox;
    Edit1: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Edit2: TEdit;
    Label3: TLabel;
    Label4: TLabel;
    Edit3: TEdit;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Edit4: TEdit;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    WebBrowser1: TWebBrowser;
    IdFTP1: TIdFTP;
    Button4: TButton;
    Label12: TLabel;
    IdAntiFreeze1: TIdAntiFreeze;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    Procedure PoiskIndy(var Schet1,Schet2,Schet3:integer; dir:string);
  end;
 
var
  Form1: TForm1;
  S1,S2,S3:integer;
implementation
 
{$R *.dfm}
 uses unit2;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
S1:=0;S2:=0;S3:=0;
end;
 
 
Procedure TForm1.PoiskIndy(var Schet1,Schet2,Schet3:integer; dir:string);     
var i,q:integer;f,a1:string; LS:TStrings;
begin
idftp1.ChangeDir(dir);
idftp1.List(nil);
Listbox1.Items.Add(idftp1.RetrieveCurrentDir);
if  idftp1.DirectoryListing.Count =0 then begin idftp1.ChangeDirUp; end;
 
for i:=0 to idftp1.DirectoryListing.Count-1 do begin
if (idftp1.DirectoryListing.Items[i].ItemType = ditdirectory) then
    begin
    a1:=idftp1.DirectoryListing.Items[i].Filename;
    PoiskIndy(Schet1,Schet2,Schet3,a1);
    end;
 
  if (ExtractFileExt(idftp1.DirectoryListing.Items[i].FileName)=Form1.Edit2.text) or (ExtractFileExt(idftp1.DirectoryListing.Items[i].FileName)=Edit3.text) then begin
  ListBox1.Items.Add(idftp1.DirectoryListing.Items[i].FileName);
  if (ExtractFileExt(idftp1.DirectoryListing.Items[i].FileName)=Edit2.text) then Schet1:=Schet1+1;
  if (ExtractFileExt(idftp1.DirectoryListing.Items[i].FileName)=Edit3.text) then Schet2:=Schet2+1;
  end;
  Schet3:=Schet3+1;
  end;
 
idftp1.ChangeDirUp;
idftp1.List(nil);
s1:=schet1;s2:=schet2;s3:=schet3;
end;
 
procedure TForm1.Button4Click(Sender: TObject);
var a:string;
begin
a:=Edit1.text;
idftp1.Host:='mirror.yandex.ru'; idftp1.Username:='Anonymous'; idftp1.Password:='';
idftp1.Port:=21; idftp1.Connect;
 
PoiskIndy(s1,s2,s3,a);
Label1.Caption:=IntToStr(s1); Label10.Caption:=IntToStr(s2); Label11.Caption:=IntToStr(s3);
if Assigned(idftp1) then idftp1.Disconnect;
end;
JapanStyle^^ вне форума Ответить с цитированием
Ответ


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

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Indy ftp server noname_06 Общие вопросы Delphi 7 16.06.2014 16:40
FTP и SSL (indy 9) Happiness_Cookie Работа с сетью в Delphi 0 21.08.2013 09:04
Socks ftp indy ujanin Работа с сетью в Delphi 1 08.09.2011 23:08
Вывод не нужного при поиске файлов coNsept Общие вопросы C/C++ 5 28.04.2010 19:11
Создание чата с через FTP Server с помощью компонентов INDY 9 dani92 Работа с сетью в Delphi 1 04.08.2009 05:22