AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Belegter Arbeitsspeicher mit TGauge
Thema durchsuchen
Ansicht
Themen-Optionen

Belegter Arbeitsspeicher mit TGauge

Ein Thema von jackie · begonnen am 18. Aug 2003 · letzter Beitrag vom 18. Aug 2003
Antwort Antwort
jackie
(Gast)

n/a Beiträge
 
#1

Belegter Arbeitsspeicher mit TGauge

  Alt 18. Aug 2003, 11:35
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;
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Belegter Arbeitsspeicher mit TGauge

  Alt 18. Aug 2003, 11:57
Du hast doch den ganzen und den verfügbaren. Wo ist da das Problem mit etwas Prozentrechnung den Anteil auszurechnen?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
jackie
(Gast)

n/a Beiträge
 
#3

Re: Belegter Arbeitsspeicher mit TGauge

  Alt 18. Aug 2003, 12:05
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 )
  Mit Zitat antworten Zitat
Benutzerbild von Uncle Cracker
Uncle Cracker

Registriert seit: 30. Mär 2003
Ort: Freital
694 Beiträge
 
#4

Re: Belegter Arbeitsspeicher mit TGauge

  Alt 18. Aug 2003, 14:20
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.
I wish it was legal to marry software because I'm madly in love with Delphi...
  Mit Zitat antworten Zitat
jackie
(Gast)

n/a Beiträge
 
#5

Re: Belegter Arbeitsspeicher mit TGauge

  Alt 18. Aug 2003, 16:19
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
  Mit Zitat antworten Zitat
Benutzerbild von hummer
hummer

Registriert seit: 27. Mai 2003
Ort: Hattingen
437 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Belegter Arbeitsspeicher mit TGauge

  Alt 18. Aug 2003, 16:25
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.
Miniaturansicht angehängter Grafiken
grafik1.jpg  
Manuel
unser Infolehrer -> Wissen ist Macht. Wir wissen nichts. Macht nichts.
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Belegter Arbeitsspeicher mit TGauge

  Alt 18. Aug 2003, 16:32
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
  Mit Zitat antworten Zitat
Benutzerbild von hummer
hummer

Registriert seit: 27. Mai 2003
Ort: Hattingen
437 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Belegter Arbeitsspeicher mit TGauge

  Alt 18. Aug 2003, 16:35
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.
Manuel
unser Infolehrer -> Wissen ist Macht. Wir wissen nichts. Macht nichts.
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Belegter Arbeitsspeicher mit TGauge

  Alt 18. Aug 2003, 16:37
Ich habe das von dir mal nachgerechnet und die Rechnung stimmt!
Vielleicht liegt es an Windoof.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:35 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz