Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Arbeitsspeicher auslesen... (https://www.delphipraxis.net/98168-arbeitsspeicher-auslesen.html)

Störtebeker 22. Aug 2007 14:26


Arbeitsspeicher auslesen...
 
Hi,

Delphi-Quellcode:
begin
var
  memory: TMemoryStatus;
begin
  memory.dwLength := SizeOf(memory);
  GlobalMemoryStatus(memory);
  Label10.caption:=(IntToStr(memory.dwTotalPhys) + ' Bytes');
  Label11.caption:=(IntToStr(memory.dwAvailPhys) + ' Bytes');
end;
wie muss ich den Code ändern, damit z.B. aus: 242886741 Bytes --> Kilobytes werden. Wäre schön, wenn die Zahl auf zwei Stellen nach dem Komma gerundet wird, damit die Zahl in meinem Anzeigefeld nicht so lang ist.

Thx.

Svenkan 22. Aug 2007 14:36

Re: Arbeitsspeicher auslesen...
 
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
  memory: TMemoryStatus;
begin
  memory.dwLength := SizeOf(memory);
  GlobalMemoryStatus(memory);
  Label10.caption:=FloatToStr(RoundTo((memory.dwTotalPhys/1024),-2)) + ' KB';
  Label11.caption:=FloatToStr(RoundTo((memory.dwAvailPhys/1024),-2)) + ' KB';
end;
Desweiteren muss die Unit 'Math' eingebunden werden.

DeddyH 22. Aug 2007 14:39

Re: Arbeitsspeicher auslesen...
 
Delphi-Quellcode:
begin
var
  memory: TMemoryStatus;
begin
  memory.dwLength := SizeOf(memory);
  GlobalMemoryStatus(memory);
  Label10.caption:=Format('%.2f KBytes',[memory.dwTotalPhys / 1024]);
  Label11.caption:=Format('%.2f KBytes',[memory.dwAvailPhys / 1024]);
end;

Störtebeker 22. Aug 2007 14:53

Re: Arbeitsspeicher auslesen...
 
Danke, hat gefunzt. Nun stelle ich fest, dass mir das immernoch ein bisschen zu lang ist. Die nächste Stufe wäre MB.

Benutze folgenden Code:

Delphi-Quellcode:
var
  memory: TMemoryStatus;
begin
  memory.dwLength := SizeOf(memory);
  GlobalMemoryStatus(memory);
  Label10.caption:=Format('%.2f KBytes',[memory.dwTotalPhys / 1024]);
  Label11.caption:=Format('%.2f KBytes',[memory.dwAvailPhys / 1024]);
end;
Was muss ich da jetzt ändern? Die 1024?

Thx.

DeddyH 22. Aug 2007 14:58

Re: Arbeitsspeicher auslesen...
 
Teil einfach erneut durch 1024 ;)
Delphi-Quellcode:
var
  memory: TMemoryStatus;
begin
  memory.dwLength := SizeOf(memory);
  GlobalMemoryStatus(memory);
  Label10.caption:=Format('%.2f MB',[(memory.dwTotalPhys / 1024) / 1024]);
  Label11.caption:=Format('%.2f MB',[(memory.dwAvailPhys / 1024) / 1024]);
end;

Störtebeker 22. Aug 2007 15:10

Re: Arbeitsspeicher auslesen...
 
Ich mal wieder:

Also Code funzt, und ist im Bereich MB auch kurz genug. :thumb:

Mal ne Frage:

Beinhaltet der Code auch die ständige Aktualisierung des Arbeitsspeichers,
oder muss ich da den Code noch weiter erweitern?

DeddyH 22. Aug 2007 15:13

Re: Arbeitsspeicher auslesen...
 
Das müsstest Du eigentlich am Besten wissen :mrgreen: . Wann rufst Du ihn denn auf? Einmalig oder in einem Timer etc.?

Störtebeker 22. Aug 2007 15:23

Re: Arbeitsspeicher auslesen...
 
Über OnFormCreate.

Ich muss das Ding in einen Timer setzten? Mit dem Intervall =??

Und weiter zum Thema Speicher auslesen:
Ich habe mal im Task Manager geguckt und da gibt es neben dem physischen Speicher auch den Kernel Speicher und den Zugesicherten Speicher. Funzen die auch mit dem Code?

Natürlich dann nicht Phys, sondern was anderes.

Thx.

DeddyH 22. Aug 2007 15:32

Re: Arbeitsspeicher auslesen...
 
Wenn Du etwas wiederkehrend aufrufen möchtest, ist der Timer die einfachste Möglichkeit. Ich würde mal ein Intervall von 1000 (= 1 Sekunde) als Basis nehmen und ggf. anpassen. Bzgl. der API kann ich im Moment nichts sagen, da leider kein Delphi zur Hand. Evtl. hilft ein Blick ins MSDN.

s-off 22. Aug 2007 15:56

Re: Arbeitsspeicher auslesen...
 
Ein [STRG]+Linksklick auf
Zitat:

var
memory: TMemoryStatus;
hätte die Windows.pas geöffnet, und Dir folgendes gezeigt:
Delphi-Quellcode:
  _MEMORYSTATUS = record
    dwLength: DWORD;
    dwMemoryLoad: DWORD;
    dwTotalPhys: DWORD;
    dwAvailPhys: DWORD;
    dwTotalPageFile: DWORD;
    dwAvailPageFile: DWORD;
    dwTotalVirtual: DWORD;
    dwAvailVirtual: DWORD;
  end;
Desweiteren empfehle ich Dir die Aneignung von Grundkenntnissen im Bereich der Datenverarbeitung, z.B. dieses Thema für den aktuellen Fall.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:12 Uhr.
Seite 1 von 2  1 2      

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