Analitcs

Pesquisar no conteúdo do blog.atlabs.com.br

quinta-feira, 2 de agosto de 2012

DELPHI - Retornando lista de diretórios

Reações: 
// unit1.pas inicio
unit Unit1;

interface

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, FileCtrl;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
  private
    sStrs : TStringList;
    { Private declarations }
  public
    procedure ListFiles(const PathName, FileName : string; const InDir : boolean; Limit : Integer = 0);
    { Public declarations }
  end;

var
  Form1: TForm1;


implementation

{$R *.dfm}


procedure TForm1.ListFiles(const PathName, FileName : string; const InDir : boolean; Limit : Integer);
var Rec  : TSearchRec;
    Path : string;
begin
  if not DirectoryExists(PathName) then exit;

  try
  if sStrs = nil then
  sStrs := TStringList.Create;
    Path := IncludeTrailingBackslash(PathName);
    if FindFirst(Path + FileName, faAnyFile - faDirectory, Rec) = 0 then
     try
       repeat
          if (Limit > 0) and (sStrs.Count >= Limit) then
          begin
            Exit;
          end
          else
          sStrs.Add(Path + Rec.Name);
       until FindNext(Rec) <> 0;
     finally
       FindClose(Rec);
     end;

    If not InDir then Exit;

    if FindFirst(Path + '*.*', faDirectory, Rec) = 0 then
     try
       repeat
        if ((Rec.Attr and faDirectory) <> 0)  and (Rec.Name<>'.') and (Rec.Name<>'..') then
         ListFiles(Path + Rec.Name, FileName, True, Limit);
       until FindNext(Rec) <> 0;
     finally
       FindClose(Rec);
     end;

   except
      sStrs.Destroy;
   raise;
   end;
end;


procedure TForm1.Button1Click(Sender: TObject);
var
  Diretorio: String;
Const
  CaminhoPadrao = 'D:\tmp\';
begin

  if FileCtrl.SelectDirectory('Selecione o Diretório', '', Diretorio) then
  begin
    if Diretorio <> '' then
      if Diretorio[Length(Diretorio)] <> '\' then
        Diretorio := Diretorio + '\';
  end
  else
    Diretorio := CaminhoPadrao;
  if sStrs <> nil then
  FreeAndNil(sStrs);  

  ListFiles(Diretorio, '*.*', True, 30);
  Self.Caption := 'Linhas: ' + IntToStr(sStrs.Count);
  Memo1.Lines := sStrs;
end;
end.

// Unit1.pas fim



//Unit1.dfm inicio

object Form1: TForm1
  Left = 192
  Top = 124
  Width = 455
  Height = 331
  Caption = 'Form1'
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'MS Sans Serif'
  Font.Style = []
  OldCreateOrder = False
  DesignSize = (
    439
    293)
  PixelsPerInch = 96
  TextHeight = 13
  object Button1: TButton
    Left = 21
    Top = 12
    Width = 75
    Height = 25
    Caption = 'Button1'
    TabOrder = 0
    OnClick = Button1Click
  end
  object Memo1: TMemo
    Left = 111
    Top = 24
    Width = 318
    Height = 260
    Anchors = [akLeft, akTop, akRight, akBottom]
    Lines.Strings = (
      'Memo1')
    ScrollBars = ssBoth
    TabOrder = 1
  end
end
//Unit1.dfm fim
//Na instrução da linha:
ListFiles(Diretorio, '*.*', True, 30);


//O retorno será de 30 arquivos, para retornar mais suprima o valor, ex:

ListFiles(Diretorio, '*.*', True);

Nenhum comentário:

Postar um comentário

Observação: somente um membro deste blog pode postar um comentário.

Max Gehringer