Estou usando essa função para retornar o tamanho de um diretório:
function DirSize(Dir:string):integer;
{Retorna o tamanho de um diretório}
var
SearchRec : TSearchRec;
Separator : string;
DirBytes : integer;
begin
DirBytes := 0;
if Copy(Dir,Length(Dir),1)='\' then
begin
Separator := '';
end
else
begin
Separator := '\';
end;
if FindFirst(Dir+Separator+'*.*',faAnyFile,SearchRec) = 0 then
begin
if FileExists(Dir+Separator+SearchRec.Name) then
begin
DirBytes := DirBytes + SearchRec.Size;
{Memo1.Lines.Add(Dir+Separator+SearchRec.Name);}
end
else if DirectoryExists(Dir+Separator+SearchRec.Name) then
begin
if (SearchRec.Name<>'.') and (SearchRec.Name<>'..') then
begin
DirSize(Dir+Separator+SearchRec.Name);
end;
end;
while FindNext(SearchRec) = 0 do
begin
if FileExists(Dir+Separator+SearchRec.Name) then
begin
DirBytes := DirBytes + SearchRec.Size;
{Memo1.Lines.Add(Dir+Separator+SearchRec.Name);}
end
else if DirectoryExists(Dir+Separator+SearchRec.Name) then
begin
if (SearchRec.Name<>'.') and (SearchRec.Name<>'..') then
begin
DirSize(Dir+Separator+SearchRec.Name);
end;
end;
end;
end;
FindClose(SearchRec);
end;
em um ShellTreeView eu listo as pastas e ao clica duas vezes eu jogo o Nome da pasta e caminho para uma tabela temporária e apresento em um Dbgrid:
procedure TFrmConfPastas.TrePasDblClick(Sender: TObject);
begin
if not TblArq.Active then
TblArq.Active := true;
TblArq.Insert;
TblArqPasta.AsString := TrePas.Selected.Text;
TblArqCaminho.AsString := TrePas.Path;
TblArqTamanho.AsCurrency := DirSize(TrePas.Path);
TblArq.Post;
end;
Mas no campo TblArqTamanho sempre traz o mesmo valor da primeira que eu cliquei e acho que também o resultado retornado não está certo....
Pergunta
robinhocne
Estou usando essa função para retornar o tamanho de um diretório:
em um ShellTreeView eu listo as pastas e ao clica duas vezes eu jogo o Nome da pasta e caminho para uma tabela temporária e apresento em um Dbgrid:Mas no campo TblArqTamanho sempre traz o mesmo valor da primeira que eu cliquei e acho que também o resultado retornado não está certo....
alguém pode me ajudar ?
Editado por robinhocneLink para o comentário
Compartilhar em outros sites
11 respostass a esta questão
Posts Recomendados
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.