viernes, 27 de febrero de 2015

tamaño de una carpeta de windows

unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);



  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}


//**********************************************************************
procedure BuscarArchivos(const directorio, mascara: string;
  atributos: Integer; var listado: TStrings);

  // Procedimiento anidado
  //
  procedure Buscar(const subdirectorio: string);
  var
    regBusqueda: TSearchRec;
  begin
    // Buscar en el directorio
    if FindFirst(subdirectorio + mascara,atributos,regBusqueda) = 0 then
    begin
      try
        repeat
          Application.ProcessMessages;
          if (regBusqueda.Attr and faDirectory = 0)
            or (regBusqueda.Name <> '.')
              and (regBusqueda.Name <> '..') then
              begin
                //listado.Add(subdirectorio + (regBusqueda.Name)+ ' --> '+ inttostr(regBusqueda.Size));
                listado.Add(inttostr(regBusqueda.Size));
              end;
        until FindNext(regBusqueda) <> 0;
      except
        FindClose(regBusqueda);
      end;
      FindClose(regBusqueda);
    end;

    // Buscar en los subdirectorios
    if FindFirst(subdirectorio + '*', atributos
      or faDirectory, regBusqueda) = 0 then
    begin
      try
        repeat
          Application.ProcessMessages;
          if ((regBusqueda.Attr and faDirectory) <> 0)
            and (regBusqueda.Name <> '.')
              and (regBusqueda.Name <> '..') then
                Buscar(subdirectorio + regBusqueda.Name + '\');
        until FindNext(regBusqueda) <> 0;
      except
        FindClose(regBusqueda);
      end;
      FindClose(regBusqueda);
    end;
  end;
   //
  // Fin del procedimiento anidado:
 // Comienza "BuscarArchivos(...)"
//
begin
  Buscar(IncludeTrailingPathDelimiter(directorio));
end;



procedure TForm1.Button1Click(Sender: TObject);
var
  lista: TStrings;
  total,  aux: real;
  i: integer;
  nombre: string;

begin
  lista := TStringList.Create;
  BuscarArchivos('C:\mgflo\video\', '*.*', faAnyFile, lista);

  memo1.clear;

  total:=0;

 for i := 0 to lista.Count-1 do
 begin

    nombre:=  lista[i];
    aux:=(strtofloat(nombre) / 1024 / 1024);
    total:=total+aux;

    memo1.Lines.Add(floattostr(aux));
 end;

     memo1.Lines.Add('---------------------------');
     memo1.Lines.Add(floattostr(total / 1024));

//  FormatFloat ('0.00', total).


  lista.Free;
end;

end.







.

No hay comentarios: