Holen Sie sich Gesamten und Verfügbaren Speicher Bei > 4 GB Installiert
Gibt es eine Möglichkeit erhalten Insgesamt und dem Verfügbaren Speicher, wenn mehr als 4 GB Speicher installiert ist, die mit Delphi 2010 unter Windows 7?
Dieser code nicht mehr zurück, als 3.99 GB:
var
Memory: TMemoryStatus;
Memory.dwLength := SizeOf( Memory );
GlobalMemoryStatus( Memory );
dwTotalPhys1.Caption := 'Total memory: ' + IntToStr( Memory.dwTotalPhys ) + ' Bytes ' + '(' + FormatByteSize
( Memory.dwTotalPhys ) + ')';
dwAvailPhys1.Caption := 'Available memory: ' + IntToStr( Memory.dwAvailPhys ) + ' Bytes ' + FormatByteSize
( Memory.dwAvailPhys ) + ')';
- Offensichtlich ein 64 bit system? Aber zum Wohle der noobs, sollten Sie sagen, dass.
- Durch PAE bestimmte Windows-Server-32-bit-Zugriff > 4 gb Speicher. msdn.microsoft.com/en-us/library/windows/desktop/...
- Ich denke, Sie sehen, 4GB, weil Sie bereits mit Win64 ABER dieser code mit Karte 2GB nur, wenn Sie laufen in einer 32 bit Umgebung!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie die GlobalMemoryStatusEx.
GlobalMemoryStatus
ist auf 4 GB beschränktIch weiß nicht, ob es bereits definiert wurde in Delphi mit seiner Struktur
TMemoryStatusEx
oder nicht (es wäre auf der Grundlage der MEMORYSTATUSEX der Windows-API.)Den Feldern, die Sie suchen müssen, sind
ullTotalPhys
undullAvailPhys
. Sie sind 64-bit-unsigned-Ganzzahlen.Ich vergessen hatte, es unterstützt nur von Windows - >= 2000, aber dies sollte kein problem mehr sein.
@Bill
Sie benötigen GlobalMemoryStatusEx. Es ist nicht perfekt, aber es ist besser als GlobalMemoryStatus.
Wie? Mit GlobalMemoryStatus, die auf einer 4-GB-computer mit Win32 ein 32-bit-app zeigt nur 2GB installiert. Mit GlobalMemoryStatusEx, die gleiche app zeigt 3GB installiert. Ein bisschen näher an die Wahrheit!
Dieser code funktioniert so wie es ist in Delphi XE (und bis):
Bitte beachten Sie, dass mit einigen API-Funktionen wird es wohl nie geben Ihnen den GESAMTEN Betrag, wenn dieser Betrag ist über 3 GB und das OS ist Win 32. Warum? Da Windows32 selbst nicht "sehen" alle Speicher!!! Sie benötigen Zugriff auf das BIOS direkt auf und Lesen Sie die hardware-Werte. JEDOCH, in einigen Fällen ist es möglicherweise nicht erforderlich, um dies zu tun: warum die Mühe, um zu zeigen, dass Ihr PC hat 4GB RAM, wenn nur 3 zugegriffen werden kann? Was ich getan habe, IN MEINEM FALL, ich wechselte die Meldung:
mit
Wieder, ich weiß nicht, ob diese geeignet ist auch in Ihrem Fall.