Autor Beitrag
Sauger Chris
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 228

Win XP, Linux SuSE 9.2
Delphi 4,Delphi 7 Ent.
BeitragVerfasst: Sa 29.12.07 15:30 
moin

meine frage wie kann ich den verwendeten speicher platz von einem dir (c:\logs\) heraus finden

ps. möglichst schnell und einfach :)


danke für eure hilfe
Tilo
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 1098
Erhaltene Danke: 13

Win7 geg. WInXP oder sogar Win98
Rad2007
BeitragVerfasst: Sa 29.12.07 16:47 
Einfach: Alle Datei(auch die in den Unterordner) ermitteln und deren Größe addieren.
Schlagwörter:
FindFirst, FindNext
Sauger Chris Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 228

Win XP, Linux SuSE 9.2
Delphi 4,Delphi 7 Ent.
BeitragVerfasst: Sa 29.12.07 17:44 
habs mal so gemacht
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
function GetFolderSize(folder: String): Integer;
var sr: TSearchRec;
    r, size: int64;
    f: File;
begin
  size := 0;
  r := FindFirst(folder + '\*.*', faAnyFile, sr);
  while (r = 0do
  begin
    if copy(sr.name, 11) <> '.' then
    begin
      if ((sr.Attr and faDirectory) <> 0)then
        size := size + GetFolderSize(folder + '\' + sr.name)
      else
      begin
        AssignFile(f, folder + '\' + sr.Name);
        Reset(f);
        size := size + FileSize(f);
        CloseFile(f);
      end;
    end;
    Application.ProcessMessages;
    r := FindNext(sr);
  end;
  FindClose(sr);
  result := size;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
edit1.Text := inttostr(GetFolderSize('c:\ant\')*100);
end;



ps. is aber glaub ich nicht so genau und dauert ne weile kann man das irgend wie schneller machen ??
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Sa 29.12.07 17:54 
Du könntest dich bei den Windows-Shell-Funktionen bedienen. Vielleicht gibt es da eine Methode, die das für dich erledigt. Aber schneller geht die dann auch nur, weil sie auf Assembler basiert, was du mit viel Aufwand auch so hinbekommen könntest.
DrRzf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 260

Win XP Prof
D7 Enterprise
BeitragVerfasst: Sa 29.12.07 18:24 
Assembler muss ncit schneller sein als Delphi Code.
Und in dem fall kommts auch eher auf die Festplattengeschwindigkeit an, der Prozzi wartet sich hier sowiso nen Wolf bis die Pladde die daten bereitstellt.

_________________
rein statistisch gesehen darf man keiner statistik trauen die man nicht selbst gefälscht hat.
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Sa 29.12.07 18:57 
Aber die Shell benutzt diese Chache-Informationen, was heißt, dass jeder Ordner nur einmal abgefragt werden muss. Wenn er schonmal ermittelt wurde, geht das ganze dann rucki-zucki. Aber stimmt schon, ASM bringt hier wohl wenig.