![]() |
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; |
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?
|
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 :? )
|
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. |
Re: Belegter Arbeitsspeicher mit TGauge
Also erst mal Danke für die Antwort. Leide geht das nicht.
Hier der geänderte Source:
Delphi-Quellcode:
Kannst du mir sagen, was ich falsch mache :!: :?:
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; |
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:
Das Intervall des Timers habe ich auf 1 gestellt.
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; Auf den Labels wird der totale und der freie Arbeistspeicher angezeigt und mit dem Gauge die Auslastung in Prozent. |
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 |
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. |
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