Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Pesquisa De Diretorios Sabendo A Quantidade


Guest Lucas Pascoal

Pergunta

Guest Lucas Pascoal

opa...

queria saber se alguém podia me ajudar..

tava lendo sobre as pesquizas de diretorio e não consegui implantar o codigo para seber a quantidade e o tamanho dos arquivos buscados..

se alguém pudesse me ajudar seria bom.. já to pesquizando faz um tempo já..

obrigado.. :huh:

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Vamos a um exemplo que talvez ajude:

jogue num form os seguintes componentes

DirectoryListBox1

DriveComboBox1

FileListBox1

FilterComboBox1

ListView1

BitBtn1

Label1

na propriedade Filelist do DirectoryListBox1 coloque o FileListBox1

na propriedade DirList do DriveComboBox1 coloque o DirectoryListBox1

na propriedade FileList do FilterComboBox1 coloque o FileListBox1

na propriedade colums do ListView1 coloque Nome Tipo Tamanho Data

na proriedade ViewStyle coloque vsReport

de 2 clicks no componente ListView1

mude a propriedade Alignment do ListView1.Colums[1] para taRigthJustify

mude a propriedade Alignment do ListView1.Colums[2] para taRigthJustify

mude a propriedade Alignment do ListView1.Colums[3] para taRigthJustify

agora vamos ao codigo:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Grids, Outline, FileCtrl, StdCtrls, ComCtrls, ImgList;

type
  TForm1 = class(TForm)
    FileListBox1: TFileListBox;
    DirectoryListBox1: TDirectoryListBox;
    DriveComboBox1: TDriveComboBox;
    FilterComboBox1: TFilterComboBox;
    ListView1: TListView;
    Button1: TButton;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  ListaDir : TStringList;
implementation

{$R *.DFM}

{ retorna o tamanho do arquivo, ou -1
  se o arquivo não for encontrado }

function tbFileSize(const FileName: string): integer;
var
  SR: TSearchRec;
  I: integer;
begin
  I := FindFirst(FileName, faArchive, SR);
  try
    if I = 0 then
      Result := SR.Size
    else
      Result := -1;
  finally
    FindClose(SR);
  end;
end;

{função para pegar a data do arquivo}
function GetFileDate(Arquivo: String): String;
var
FHandle: integer;
begin
   FHandle := FileOpen(Arquivo, 0);
   try
      Result := DateTimeToStr(FileDateToDateTime(FileGetDate(FHandle)));
   finally
      FileClose(FHandle);
   end;
end;


{função para pegar o nome do arquivo sem a extensão}
function RemoveExt(pStrValue: string ): string;
var 
  i : integer;
begin
  i := Pos('.',pStrValue);
  if i <> 0 then
     begin
       result := copy(pStrValue,1,i - 1);
     end
  else
     begin
       result := pStrValue;
     end;
end;

{função para pegar a extensão do arquivo sem o nome}
function TipoArquivo(Nome: String): String;
var
  SR: TSearchRec;
  I: integer;
begin
  I := FindFirst(Nome+'.*', faAnyFile, SR);
  if I = 0 then
    Result := copy(Sr.Name,Pos('.',Sr.Name),4)
  else
    Result := '';
end;

// Cria um stringList com todos os arquivos de um diretório
// Aceita mascaras
function GetFileList(FDirectory, Filter: TFileName; ShowFolder:Boolean): TStringList;
var
   ARec: TSearchRec;
   Res: Integer;
begin
   if FDirectory[Length(FDirectory)] <> '\'
      then
      begin
      FDirectory := FDirectory + '\';
      end;
   Result := TStringList.Create;
   try
     Res := FindFirst(FDirectory + Filter, faAnyFile or faArchive, ARec);
     while Res = 0 do
           begin
           if ((ARec.Attr and faArchive) = faAnyFile) or ((ARec.Attr and faArchive) = faArchive) then
              begin
              if ShowFolder then
                 begin
                 Result.Add(FDirectory + ARec.Name);
                 end
              else
                 begin
                 Result.Add(ARec.Name);
                 end
              end;
           Res := FindNext(ARec);
           end;
     FindClose(ARec);
   except
     Result.Free;
   end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
ListItem : TListItem; i: integer; tam : real;
begin
    //ListaDir.Clear;
    //ListaDir := GetFileList(DriveComboBox1.Text,'*.*',true);

    ListView1.Items.Clear;   // limpa a lista no ListView1

    Label1.Caption := 'Total Arq = ' + inttostr(FileListBox1.Items.Count);  // mostra o total de arquivos

    for i := 0 to FileListBox1.Items.Count-1 do
      begin
          tam := 0;

          {adicionar um item}
          ListItem:= ListView1.Items.Add;

          {pegar o nome do arquivo}
          ListItem.Caption:=(RemoveExt(ExtractFileName(FileListBox1.Items.Strings[i])));
          if Pos('[', ListItem.Caption) > 0 then continue;

          {pegar a extensão do arquivo}
          ListItem.SubItems.add(trim(TipoArquivo(FileListBox1.Items.Strings[i])));

          {pegar o tamanho do arquivo}
          tam := tbFileSize(FileListBox1.Items.Strings[i]) / 1024;
          if tam > 1 then
             ListItem.SubItems.add(floattostr(round(tam)) + '  KB')
          else
             ListItem.SubItems.add(floattostr(round(tam+1)) + '  KB');

          {pegar a data e a hora do arquivo}
          ListItem.SubItems.add(GetFileDate(FileListBox1.Items.Strings[i]));


      end;


end;

end.

voce pode usar a função GetFileList no lugar do FileListBox1 , esta é uma ideia inicial para o que voce esta querendo

OBS: este codigo vai mostrar em um ListView o nome, tipo, tamanho e data dos arquivos que são mostrados no FileListBox e a quantidade de arquivos num Label

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Lucas Pascoal
vlw cara.. ainda não testei o codigo mais pelo q eu olhei por cima é isso mesmo q eu tava procurando...

brigadao..

cara.. teste aki.. e deu tudo certo.. tava precisando saber o numero de pastas tb.. tipo.. de subpastas.. mais já to tentando organizar isso...

brigadao.. :P

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...