AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Falscher Wert bei GlobalMemoryStatus
Thema durchsuchen
Ansicht
Themen-Optionen

Falscher Wert bei GlobalMemoryStatus

Ein Thema von Willie1 · begonnen am 1. Jul 2008 · letzter Beitrag vom 1. Jul 2008
Antwort Antwort
Willie1

Registriert seit: 28. Mai 2008
655 Beiträge
 
Delphi 10.1 Berlin Starter
 
#1

Falscher Wert bei GlobalMemoryStatus

  Alt 1. Jul 2008, 11:31
Hallo Leute,
ich habe mir schon lange eine About-Box gestrickt, die als kleine Zugabe den vorhandenen RAM-Speicher anzeigt. Ich benutze TMemoryStatus u. GlobalMemoryStatus. Auf meinem alten Rechner mit W98 und anderen mit XP wird der richtige Wert angezeigt.
Auf meinem neuen Laptop mit Vista und 3 GB Memory wird aber nur 2 GB angezeigt. Ist das ein Fehler von Delphi oder ein Bug von Vista. Kann ich mir beides eigentlich nicht vorstellen. Auf dem Begrüßungsfenster meines PC's wird richtig 3 GB angezeigt.

MfG
Willie
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Falscher Wert bei GlobalMemoryStatus

  Alt 1. Jul 2008, 11:38
Du benutzt eine Funktion von Windows, da kann Delphi nix für.

Ab 2GB hast du da anscheinend ein Problem (besonders wenn du ein 32-bit Programm in einem 64Bit-BS ausführst.

Zitat von msdn:
[GlobalMemoryStatus can return incorrect information. Use the GlobalMemoryStatusEx function instead. ]
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.048 Beiträge
 
Delphi 12 Athens
 
#3

Re: Falscher Wert bei GlobalMemoryStatus

  Alt 1. Jul 2008, 11:42
dein Programm läuft pe Standard in 'nem 3GB Modus (nur die unteren 31 Bit der Pöinter werden vewendet)

du mußt es erst so Markieren, daß Windows 3GB verwendet, ansonsten wird alles auf 2 GB runtergerundet.

http://coding.derkeiler.com/Archive/.../msg00098.html

[add]
hat nicht nur mit 64 bit zu tun .. in 32 Bit kann man auch mit bis zu 4 GB arbeiten (2^32 = 4 GB ... und maximal 3 GB für Programme, Rest nur System)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#4

Re: Falscher Wert bei GlobalMemoryStatus

  Alt 1. Jul 2008, 11:45
Aus der Delphi-Hilfe zu GlobalMemoryStatus:
Zitat:
You can use the GlobalMemoryStatus function to determine how much memory your application can allocate without severely impacting other applications.

The information returned by the GlobalMemoryStatus function is volatile. There is no guarantee that two sequential calls to this function will return the same information.

On computers with more than 4 GB of memory, the GlobalMemoryStatus function can return incorrect information. Windows 2000 and later report a value of -1 to indicate an overflow. Earlier versions of Windows NT report a value that is the real amount of memory, modulo 4 GB. For this reason, use the GlobalMemoryStatusEx function instead.

On Intel x86 computers with more than 2 GB and less than 4 GB of memory, the GlobalMemoryStatus function will always return 2 GB in the dwTotalPhys member of the MEMORYSTATUS structure. Similarly, if the total available memory is between 2 and 4 GB, the dwAvailPhys member of the MEMORYSTATUS structure will be rounded down to 2 GB. If the executable is linked using the /LARGEADDRESSAWARE linker option, then the GlobalMemoryStatus function will return the correct amount of physical memory in both members.
Erklärt dies das "Fehlverhalten"?
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Falscher Wert bei GlobalMemoryStatus

  Alt 1. Jul 2008, 11:49
Zitat von himitsu:
und maximal 3 GB für Programme, Rest nur System)
maximal 2GB (unter Windows) für Programme
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Falscher Wert bei GlobalMemoryStatus

  Alt 1. Jul 2008, 12:45
Moin Sirius,

Zitat von sirius:
Zitat von himitsu:
und maximal 3 GB für Programme, Rest nur System)
maximal 2GB (unter Windows) für Programme
Nein, wenn das System entsprechend gestartet wird, und die Programme dafür ausgelegt (entsprechende compiliert) sind, geht auch unter 32-Bit Windows die Verteilung 3GB/1GB statt der üblichen 2GB/2GB.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Willie1

Registriert seit: 28. Mai 2008
655 Beiträge
 
Delphi 10.1 Berlin Starter
 
#7

Re: Falscher Wert bei GlobalMemoryStatus

  Alt 1. Jul 2008, 12:53
Danke Leute,
ich habe verstanden. Ich muss also TMemoryStatusEx nachbauen und GlobalMemoryStatusEx(..) mit external einbinden. Weiß jemand ab welcher Windows-Version GlobalMemoryStatusEx zur Verfügung steht, ggf. muss ich erst Windows-Version abfragen? Über die Speicherverteilung unter Vista habe ich bisher noch keine Gedanken gemacht.

Willie.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.620 Beiträge
 
Delphi 12 Athens
 
#8

Re: Falscher Wert bei GlobalMemoryStatus

  Alt 1. Jul 2008, 13:01
Laut MSDN ist die Funktion ab Windows 2000 verfügbar.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Willie1

Registriert seit: 28. Mai 2008
655 Beiträge
 
Delphi 10.1 Berlin Starter
 
#9

Re: Falscher Wert bei GlobalMemoryStatus

  Alt 1. Jul 2008, 19:47
jetzt fluppt es. Danke.

W.
  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 10:41 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