Deutsch
Forum

DWordLong aus einem API behandeln

 
- Seite 1 -



Jac
de
Lad
Weiß jemand, wie ich am besten ein DWORDLONG in einem Bereich definiere und auslesen kann (dann sicher am besten als Float)?

Jac
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
02.01.2009  
 



 
- Seite 1 -



Jac
de
Lad
Nein eben nicht! GlobalMemoryStatus kommt nicht mit 8GB klar, deswegen gibts ja GlobalMemoryStatusEx!
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
02.01.2009  
 




Michael
Wodrich
Geb doch mal die Quelle an, wo Du die Struktur her hast...
 
Programmieren, das spannendste Detektivspiel der Welt.
02.01.2009  
 



 
- Seite 2 -



Michael
Wodrich
...und steht da auch
Nimm GlobalMemoryStatus(MemoryStatusEx) ???

oder

Nimm GlobalMemoryStatusEx(MemoryStatusEx) ???
 
Programmieren, das spannendste Detektivspiel der Welt.
02.01.2009  
 




Jac
de
Lad
Stümmt du hast recht, GlobalMemoryEx(). Allerdings kommt dann immer 0.
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
02.01.2009  
 




Michael
Wodrich
Schau Dir meinen letzten Code nochmal an.
Oberste Struktur weg, die 2. wieder aktivieren.
Dann das mit dem f! probieren (und dem langsam an GB annähern).
Wenn Du die Ex Funk aufrufst sollte es jetzt klappen, sonst nochmal Dein korrigiertes Schnipsel posten.
 
Programmieren, das spannendste Detektivspiel der Welt.
03.01.2009  
 




Jac
de
Lad

KompilierenMarkierenSeparieren
struct Memory=dwLength&,dwMemoryLoad&,dwTotalPhys&,dwAvailPhys&,dwTotalPageFile&,dwAvailPageFile&,dwTotalVirtual&,dwAvailVirtual&
struct Memory=dwLength&,dwMemoryLoad&,PhysLo&,PhysHi&,ullAvailPhys#(8),ullTotalPageFile#(8),ullAvailPageFile#(8),ullTotalVirtual#(8),ullAvailVirtual#(8),ullAvailExtendedVirtual#(8)
struct Memory=dwLength&,dwMemoryLoad&,ullTotalPhys#(8),ullAvailPhys#(8),ullTotalPageFile#(8),ullAvailPageFile#(8),ullTotalVirtual#(8),ullAvailVirtual#(8),ullAvailExtendedVirtual#(8)
cls
declare b#
declare f!
Dim b#,Memory
GlobalMemoryStatusEx(b#)
b#.dwLength&=SizeOf(b#)
Print Load: +Str$(b#.dwMemoryLoad&)
f! = b#.PhysHi& * 2^16 + b#.PhysLo&
Print TotalPhys: +Format$(#,0,f!)+ Bytes
Print TotalPhys: +Format$(#,0,b#.dwTotalPhys&/1024)+ KB
Print TotalPhys: +Format$(#,0,b#.dwTotalPhys&/(1024^2))+ MB
Print TotalPhys: +Format$(#,0,b#.dwTotalPhys&/(1024^3))+ GB
Print -Ende-
Dispose b#
waitinput
end

Mit GlobalMemoryStatus kommt 65.535, mit der Ex-Funktion 0. Ich muss für heute Schluss machen.

Jac
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
03.01.2009  
 




Michael
Wodrich
So läuft es bei mir....
KompilierenMarkierenSeparieren
 {$iq}
 $H f:profanincludewindows.ph
 $H f:profanincludestructs.ph
struct Memory=dwLength&,dwMemoryLoad&,PhysLo&,PhysHi&,ullAvailPhys#(8),ullTotalPageFile#(8),ullAvailPageFile#(8),ullTotalVirtual#(8),ullAvailVirtual#(8),ullAvailExtendedVirtual#(8)
MEMORYSTATUS = dwLength&,dwMemoryLoad&,dwTotalPhys&,dwAvailPhys&,dwTotalPageFile&,dwAvailPageFile&,dwTotalVirtual&,dwAvailVirtual&;
struct MemEx = dwLength&,
dwMemoryLoad&,
TotalPhysLo&,TotalPhysHi&,
AvailPhysLo&,AvailPhysHi&,
TotalPageFileLo&,TotalPageFileHi&,
AvailPageFileLo&,AvailPageFileHi&,
TotalVirtualLo&,TotalVirtualHi&,
AvailVirtualLo&,AvailVirtualHi&,
AvailExtendedVirtualLo&,AvailExtendedVirtualHi&
cls
declare b#
declare f!
Dim b#,MemEx
b#.dwLength&=SizeOf(b#)
External(~kernel32,GlobalMemoryStatusEx,b#)
Print Load: +Str$(b#.dwMemoryLoad&)
f! = b#.TotalPhysHi& * 2^32 + b#.TotalPhysLo&
Print TotalPhys: +Format$(#,0,f!)+ Bytes
Print TotalPhys: +Format$(#,0,f!/1024)+ KB
Print TotalPhys: +Format$(#,0,f!/(1024^2))+ MB
Print TotalPhys: +Format$(#,0,f!/(1024^3))+ GB
Print -Ende-
Dispose b#
waitinput
end
 
Programmieren, das spannendste Detektivspiel der Welt.
03.01.2009  
 




Michael
Wodrich
Die Längenangabe der Struktur muß vor dem Aufruf gesetzt sein.
 
Programmieren, das spannendste Detektivspiel der Welt.
03.01.2009  
 




Michael
Wodrich
Da kämpfe ich für ihn, und er gibt einfach auf...

...und das so kurz vor dem Ziel.

Schöne Grüße (und eine gute Nacht)
Michael Wodrich
 
Programmieren, das spannendste Detektivspiel der Welt.
03.01.2009  
 




Jac
de
Lad
Ja, stimmt, das war mir eigentlich bewusst, das hab ich nur übersehen. Trotzdem liefert mir das dann 4GB RAM anstelle von 8. Andere Programme (zum Beispiel so ein Teil in der Sidebar) liefern aber das korrekte Ergebnis).

Jac
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
03.01.2009  
 




Michael
Wodrich
Meins zeigt leider nur 511 MB.

Bei sooo gewaltigen Zahlen kann ich leider nicht mitreden (und demzufolge auch nicht nachprüfen).

Schöne Grüße
Michael Wodrich

P.S.: Habs mal vervollständigt
KompilierenMarkierenSeparieren
Keywords: Speicher, Memory, 64-Bit-Long
Systemspeicher durchleuchten
(sollte eigentlich auch mit gigas zurechtkommen)
jac/wod
 $H f:profanincludewindows.ph
struct MemEx = dwLength&,
dwMemoryLoad&,
TotalPhysLo&,TotalPhysHi&,
AvailPhysLo&,AvailPhysHi&,
TotalPageFileLo&,TotalPageFileHi&,
AvailPageFileLo&,AvailPageFileHi&,
TotalVirtualLo&,TotalVirtualHi&,
AvailVirtualLo&,AvailVirtualHi&,
AvailExtendedVirtualLo&,AvailExtendedVirtualHi&

Proc Zeige_Mem

    Parameters anzeigetext$, groesse!
    Declare Typ$
    Typ$ = Bytes

    If groesse! > 1024

        groesse! = groesse! / 1024
        Typ$ = KB

    EndIf

    If groesse! > 1024

        groesse! = groesse! / 1024
        Typ$ = MB

    EndIf

    If groesse! > 1024

        groesse! = groesse! / 1024
        Typ$ = GB

    EndIf

    Print    ;anzeigetext$; :, Format$(#,0,groesse!), Typ$

EndProc

cls
declare b#, f!
Dim b#, MemEx
b#.dwLength& = SizeOf(b#)
External(~kernel32,GlobalMemoryStatusEx,b#)
Print
Print    Load:  + Str$(b#.dwMemoryLoad&) + %
f! = b#.TotalPhysHi& * 2^32 + b#.TotalPhysLo&
Zeige_Mem(TotalPhys, f!)
f! = b#.AvailPhysHi& * 2^32 + b#.AvailPhysLo&
Zeige_Mem(AvailPhys, f!)
f! = b#.TotalPageFileHi& * 2^32 + b#.TotalPageFileLo&
Zeige_Mem(TotalPageFile, f!)
f! = b#.AvailPageFileHi& * 2^32 + b#.AvailPageFileLo&
Zeige_Mem(AvailPageFile, f!)
f! = b#.TotalVirtualHi& * 2^32 + b#.TotalVirtualLo&
Zeige_Mem(TotalVirtual, f!)
f! = b#.AvailVirtualHi& * 2^32 + b#.AvailVirtualLo&
Zeige_Mem(AvailVirtual, f!)
f! = b#.AvailExtendedVirtualHi& * 2^32 + b#.AvailExtendedVirtualLo&
Zeige_Mem(AvailExtendedVirtual, f!)
Print
Print -Ende nach Tastendruck-
Dispose b#
waitkey
end
 
Programmieren, das spannendste Detektivspiel der Welt.
03.01.2009  
 




Jac
de
Lad
Trotzdem vielen Dank. (Hier kommen auch nur 8189MB an, aber es weiß ja jeder was gemeint ist. Das ist wie mit meinen 3 Terabyte-Platten, die jeweils nur 931GB haben, was für ein Betrug!).

Jac
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
03.01.2009  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

9.864 Betrachtungen

Unbenanntvor 0 min.
awabso08.09.2015
ByteAttack04.09.2015
Julian Schmidt22.09.2013
dr.dirk02.09.2013

Themeninformationen

Dieses Thema hat 3 Teilnehmer:

Michael Wodrich (11x)
Jac de Lad (10x)
iF (1x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie