![]() |
Arbeitsspeicher auslesen...
Hi,
Delphi-Quellcode:
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.
begin
var memory: TMemoryStatus; begin memory.dwLength := SizeOf(memory); GlobalMemoryStatus(memory); Label10.caption:=(IntToStr(memory.dwTotalPhys) + ' Bytes'); Label11.caption:=(IntToStr(memory.dwAvailPhys) + ' Bytes'); end; Thx. |
Re: Arbeitsspeicher auslesen...
Delphi-Quellcode:
Desweiteren muss die Unit 'Math' eingebunden werden.
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; |
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; |
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:
Was muss ich da jetzt ändern? Die 1024?
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; Thx. |
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; |
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? |
Re: Arbeitsspeicher auslesen...
Das müsstest Du eigentlich am Besten wissen :mrgreen: . Wann rufst Du ihn denn auf? Einmalig oder in einem Timer etc.?
|
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. |
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
![]() |
Re: Arbeitsspeicher auslesen...
Ein [STRG]+Linksklick auf
Zitat:
Delphi-Quellcode:
Desweiteren empfehle ich Dir die Aneignung von Grundkenntnissen im Bereich der Datenverarbeitung, z.B.
_MEMORYSTATUS = record
dwLength: DWORD; dwMemoryLoad: DWORD; dwTotalPhys: DWORD; dwAvailPhys: DWORD; dwTotalPageFile: DWORD; dwAvailPageFile: DWORD; dwTotalVirtual: DWORD; dwAvailVirtual: DWORD; end; ![]() |
Re: Arbeitsspeicher auslesen...
Zitat:
|
Re: Arbeitsspeicher auslesen...
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:49 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