Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Belegter Arbeitsspeicher mit TGauge (https://www.delphipraxis.net/7638-belegter-arbeitsspeicher-mit-tgauge.html)

jackie 18. Aug 2003 11:35


Belegter Arbeitsspeicher mit TGauge
 
Hallo an alle!!

Ich hab in Delphi 7 ein Programm erstellt, dass den freien und gesamten Arbeitsspeicher berechnet. Ich möchte den belegten Arbeitsspeicher in Prozent mit einer TGauge anzeigen. Leider krieg ich das nicht hin! :( Hat irgendwer eine Idee, wie das gehen könnte?
Hier der Source:

Delphi-Quellcode:
procedure TMain.Button2Click(Sender: TObject);
var MS:TMemoryStatus;
    frei, total: int64;
    belegt: Integer;
begin
  Button2.Caption:='Aktualisieren';
  frei:=MS.dwAvailPhys;
  total:=MS.dwTotalPhys;
  MS.dwLength:=sizeof( MS);
  GlobalMemoryStatus( MS);
  label5.caption:= 'Gesamt: '+
  FormatFloat( '#,###" MB"',MS.dwTotalPhys / 1048576);
  label4.caption:= 'Frei: '+
  FormatFloat( '#,###" MB"',MS.dwAvailPhys / 1048576);
  belegt:=(MS.dwTotalPhys div 1048576)-(MS.dwAvailPhys div 1048576);
  label6.Caption:='Belegt: '+IntToStr(belegt)+' MB';
end;

Luckie 18. Aug 2003 11:57

Re: Belegter Arbeitsspeicher mit TGauge
 
Du hast doch den ganzen und den verfügbaren. Wo ist da das Problem mit etwas Prozentrechnung den Anteil auszurechnen?

jackie 18. Aug 2003 12:05

Re: Belegter Arbeitsspeicher mit TGauge
 
Das hab ich schon mal versucht, aber irgendwas hat nicht funktioniert. Nachdem ich mich 2 Stunden gespielt habe, hab ich den Source blöderweise aus Ärger gelöscht und ich hab keine Ahnung mehr wie ich es gemacht habe. Ich glaube, dass das vielleicht gar nicht so falsch war. (Hätte es nicht löschen dürfen :? )

Uncle Cracker 18. Aug 2003 14:20

Re: Belegter Arbeitsspeicher mit TGauge
 
So sieht die Berechnung aus: ((Gesamt-Frei)/Gesamt*100)

Das ganze musst du jetzt nur noch mit Round runden und in den Gauge1.Progress schreiben.


PS: Wenn du's hast kannst du ja nochmal den geänderten Source schreiben.

jackie 18. Aug 2003 16:19

Re: Belegter Arbeitsspeicher mit TGauge
 
Also erst mal Danke für die Antwort. Leide geht das nicht.

Hier der geänderte Source:
Delphi-Quellcode:
procedure TMain.Button2Click(Sender: TObject);
var MS:TMemoryStatus;
    frei, total, perc: int64;
    belegt: Integer;
begin
  Button2.Caption:='Aktualisieren';
  total:=MS.dwTotalPhys;
  frei:=MS.dwAvailPhys;
  perc:=round((total-frei)/total*100);
  MS.dwLength:=sizeof( MS);
  GlobalMemoryStatus( MS);
  label5.caption:= 'Gesamt: '+
  FormatFloat( '#,###" MB"',MS.dwTotalPhys / 1048576);
  label4.caption:= 'Frei: '+
  FormatFloat( '#,###" MB"',MS.dwAvailPhys / 1048576);
  belegt:=(MS.dwTotalPhys div 1048576)-(MS.dwAvailPhys div 1048576);
  Gauge2.Progress := perc;
  label6.Caption:='Belegt: '+IntToStr(belegt)+' MB';
end;
Kannst du mir sagen, was ich falsch mache :!: :?:

hummer 18. Aug 2003 16:25

Re: Belegter Arbeitsspeicher mit TGauge
 
Liste der Anhänge anzeigen (Anzahl: 1)
Kannst es ja mal damit versuchen. Mit dem Code funktioniert es einwandfrei.

Code:
procedure TForm1.Timer1Timer(Sender: TObject);
var
  x, y : real;
  memory: TMemoryStatus;
begin
  memory.dwLength := SizeOf(memory);
  GlobalMemoryStatus(memory);
  label1.Caption :='Totaler Arbeitsspeicher: ' +
              IntToStr(memory.dwTotalPhys) + ' Bytes';
  label2.Caption :='Freier Arbeitsspeicher:    ' +
              IntToStr(memory.dwAvailPhys) + ' Bytes';
x := memory.dwTotalPhys - memory.dwAvailPhys;
y := memory.dwTotalPhys;
Gauge1.Progress := round(((x/y)*100));
end;
Das Intervall des Timers habe ich auf 1 gestellt.
Auf den Labels wird der totale und der freie Arbeistspeicher angezeigt und mit dem Gauge die Auslastung in Prozent.

Matze 18. Aug 2003 16:32

Re: Belegter Arbeitsspeicher mit TGauge
 
Hi Hummer!

Kann das sein, dass das etwas ungenau ist??

Ich hab 512 MB RAM, 166 MB sind belegt (laut Windows).
Da wären dann 32% belegt (ich hoffe, ich hab mich nicht verrechnet).

Dein Code gibt aber 44% aus.

Woran liegt das?

Gruß Matze

hummer 18. Aug 2003 16:35

Re: Belegter Arbeitsspeicher mit TGauge
 
Ich hab es bei mir noch nicht nachgerechnet, aber an dem round kann es ja nicht liegen. Die Formel ist ja eigentlich richtig.

Muss ich noch mal überprüfen.

Matze 18. Aug 2003 16:37

Re: Belegter Arbeitsspeicher mit TGauge
 
Ich habe das von dir mal nachgerechnet und die Rechnung stimmt!
Vielleicht liegt es an Windoof.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:38 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz