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....
Question
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 ?
Edited by robinhocneLink to comment
Share on other sites
11 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.