| |
|
|
|
Beschreibung:
Alloziert une Speicherblock aus dem Heap
Deklaration:
Def GlobalAlloc(2) !kernel32, GlobalAlloc
paramètre:
1.paramètre: une Kombination suivant Konstanten: ~GMEM_FIXED = $0, peux pas avec ~GMEM_MOVEABLE ou bien ~GMEM_DISCARDABLE kombiniert volonté
~GMEM_MOVEABLE = $2, peux pas avec ~GMEM_FIXED kombiniert volonté
~GPTR = $40 ~GHND = $42 ~GMEM_DDESHARE = $2000 ~GMEM_DISCARDABLE = $100, peux pas avec ~GMEM_FIXED kombiniert volonté
~GMEM_NOCOMPACT = $10 ~GMEM_NODISCARD = $20 ~GMEM_SHARE = $2000 ~GMEM_ZEROINIT = $40, Initialisiert den Speicherinhalt avec zéro
2.paramètre: Size& (Taille des Mémoire dans Byte)
Rückgabewert:
Im Fehlerfalle 0, ansonsten Handle des allozierten Speicherobjekts
Beispiel:
KompilierenMarqueSéparationDef GlobalAlloc(2) !KERNEL32.DLL, GlobalAlloc
Def GlobalFree(1) !KERNEL32.DLL, GlobalFree
Def MoveMemory(3) !KERNEL32, RtlMoveMemory
Proc PeekL
Parameters ReadMemoryAddr&
Declare Value&, Result!
MoveMemory(Addr(Value&), ReadMemoryAddr& + 2, 2)
Result! = Value& * 2^16
MoveMemory(Addr(Value&), ReadMemoryAddr&, 2)
Result! = Result! + Value&
Return Result!
EndProc
Proc PokeL
Parameters WriteMemoryAddr&, Value!
Declare Value&
If (Value! > -1) And (Value! < 2^32)
If Value! - (2^16 - 1) > 0
Value& = Value! 2^16
Else
Value& = 0
EndIf
MoveMemory(WriteMemoryAddr& + 2, @Addr(Value&), 2)
Value& = Int(Value! - (Value& * 2^16))
MoveMemory(WriteMemoryAddr&, Addr(Value&), 2)
Else
MessageBox(Zahl zu groß!, Wichtiger Hinweis, 48)
EndIf
EndProc
Declare hMem&
4 Byte = Long Speicher reservieren
hMem& = GlobalAlloc($40, 4)
If hMem&
Speicher mit 1111 füllen
PokeL hMem&, 1111
Speicher auslesen und in MessageBox wiedergeben
MessageBox(In Adresse: + Str$(hMem&) + steht folgender Wert: + Str$(Int(PeekL(hMem&))) , Inhalt des Speicher, 0)
Speicherobjekt freigeben
GlobalFree(hMem&)
Else
MessageBox(Speicher konnte nicht reserviert werden, Wichtiger Hinweis, 48)
href='./../funktionsreferenzen/XProfan/endif/'>EndIf
GlobalLock, GlobalReAlloc, GlobalFree
|
|
|
| |
|
|
|
| |
|
| |
|
|