MEMORYSTATUSEX oder MEMORYSTATUS ?

Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Benutzeravatar
SDL
Beiträge: 65
Registriert: 15.09.2006 05:19
Computerausstattung: MSI 990FXA-GD80
AMD FX-8350(3,1GHz) 4-4,4GHz
Corsair Dominator Platinum 8GB 2133 (2240)
2 Nvidia GeForce GTX 550Ti
Xilence XQ semipassives Netzteil 750Watt
SATA III WDC WD10 1TB
SATA III SSD Toshiba 128 GB
SATA III SSD Samsung 840 EVO 250 GB
eSATA WDC WD SE16 500 GB

Wassergekühlt

Win 7 pro
Leistungsindex 7,8
Wohnort: Hansestadt Stendal

MEMORYSTATUSEX oder MEMORYSTATUS ?

Beitrag von SDL »

Hallo alle zusammen.

Ich benutze die API "Memorystatus" und funktioniert bei mir

Code: Alles auswählen

Procedure.s RAM_() ; gibt String zurück
  ;*****************************************************************************
  
  Protected Memory.MEMORYSTATUS ; lokale geschütze Variable vom Typ MEMORYSTATUS
  Protected _ram.s              ; lokale geschützte Stringvariable

  GlobalMemoryStatus_(@Memory)  ; Pointer zu Memory, welche als MEMORYSTATUS declariert wurde
  _ram = Str(Memory\dwTotalPhys/1024/1024)+" MByte Ram"

  ProcedureReturn _ram          ; Rückgabewert
EndProcedure
In der WINAPI von rsbasic wird "MEMORYSTATUSEX" benutzt. Außer das die Strucktur erweitert ist kann ich kein Unterschied feststellen.

Frage, ist den die API "Memorystatus" nur noch ein Relikt aus den alten Tagen? und wird verschwinden?

MfG
Zu meiner Schulzeit war die Bildung kostenlos, für einige aber Umsonst.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: MEMORYSTATUSEX oder MEMORYSTATUS ?

Beitrag von ts-soft »

Ich würde lieber die native PB Funktion nutzen:

Code: Alles auswählen

Debug Str(MemoryStatus(#PB_System_TotalPhysical) / 1024 / 1024) + " MByte Ram"
1. Code ist kürzer :mrgreen:
2. Gibt auch auf 64-Bit Systemen mit 32-Bit Compiler korrekte Ergebnisse.
(PS: mit MEMORYSTATUSEX gibt es dieses Problem anscheinend nicht!)
3. Crossplattform.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
SDL
Beiträge: 65
Registriert: 15.09.2006 05:19
Computerausstattung: MSI 990FXA-GD80
AMD FX-8350(3,1GHz) 4-4,4GHz
Corsair Dominator Platinum 8GB 2133 (2240)
2 Nvidia GeForce GTX 550Ti
Xilence XQ semipassives Netzteil 750Watt
SATA III WDC WD10 1TB
SATA III SSD Toshiba 128 GB
SATA III SSD Samsung 840 EVO 250 GB
eSATA WDC WD SE16 500 GB

Wassergekühlt

Win 7 pro
Leistungsindex 7,8
Wohnort: Hansestadt Stendal

Re: MEMORYSTATUSEX oder MEMORYSTATUS ?

Beitrag von SDL »

ts-soft hat geschrieben:Ich würde lieber die native PB Funktion nutzen:

Code: Alles auswählen

Debug Str(MemoryStatus(#PB_System_TotalPhysical) / 1024 / 1024) + " MByte Ram"
1. Code ist kürzer :mrgreen:
2. Gibt auch auf 64-Bit Systemen mit 32-Bit Compiler korrekte Ergebnisse.
(PS: mit MEMORYSTATUSEX gibt es dieses Problem anscheinend nicht!)
3. Crossplattform.

Danke für die Antwort.
Der Tip ist beim schreiben eleganter. :mrgreen:

Ich habe beides ausprobiert.
--> WinXP SP3 x86; beide API´s korrekte Werte (3GB RAM)
--> Win7 SP1 x64 ; gleiche Ergebnis (PBx86) (2GB RAM)
Der Punkt 3 ist nicht zu Verachten. :wink:

Also gibt es beim Zusammenspiel 64/32 Bit manchmal falsche Ergebnisse?!
Zu meiner Schulzeit war die Bildung kostenlos, für einige aber Umsonst.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: MEMORYSTATUSEX oder MEMORYSTATUS ?

Beitrag von ts-soft »

SDL hat geschrieben:Also gibt es beim Zusammenspiel 64/32 Bit manchmal falsche Ergebnisse?!
Naja, auf meinem Win7 64-Bit kommt mit 64-Bit Compiler das korrekte Ergebenis (4 GB) aber mit
dem 32-Bit Compiler kommt 0 GB!
Das liegt wohl daran, das der Structuremember ein signed Long ist, in dem keine 4 GB passen, das
ergebnis also negativ sein wird.

Die ExVersion nutzt Quads und ist somit Akkurat im Ergebnis, genauso wie die PB-Funktion.

Wenn Du dann noch berücksichtigst, das aktuelle System eher 8 und 16 GB RAM haben, sollte die
alte Strukture wohl ausgedient haben :wink:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
SDL
Beiträge: 65
Registriert: 15.09.2006 05:19
Computerausstattung: MSI 990FXA-GD80
AMD FX-8350(3,1GHz) 4-4,4GHz
Corsair Dominator Platinum 8GB 2133 (2240)
2 Nvidia GeForce GTX 550Ti
Xilence XQ semipassives Netzteil 750Watt
SATA III WDC WD10 1TB
SATA III SSD Toshiba 128 GB
SATA III SSD Samsung 840 EVO 250 GB
eSATA WDC WD SE16 500 GB

Wassergekühlt

Win 7 pro
Leistungsindex 7,8
Wohnort: Hansestadt Stendal

Re: MEMORYSTATUSEX oder MEMORYSTATUS ?

Beitrag von SDL »

oh ja :oops: ,da war ja was mit den Bit´s .

Danke!
Zu meiner Schulzeit war die Bildung kostenlos, für einige aber Umsonst.
Antworten