Deutsch
Stammtisch & Café

GlobalAlloc.

 


Beschreibung:

Alloziert einen Speicherblock aus dem Heap




Deklaration:

Def GlobalAlloc(2) !kernel32, GlobalAlloc




Parameter:

1.Parameter: Eine Kombination folgender Konstanten:
~GMEM_FIXED = $0, kann nicht mit ~GMEM_MOVEABLE oder ~GMEM_DISCARDABLE kombiniert werden

~GMEM_MOVEABLE = $2, kann nicht mit ~GMEM_FIXED kombiniert werden

~GPTR = $40
~GHND = $42
~GMEM_DDESHARE = $2000
~GMEM_DISCARDABLE = $100, kann nicht mit ~GMEM_FIXED kombiniert werden

~GMEM_NOCOMPACT = $10
~GMEM_NODISCARD = $20
~GMEM_SHARE = $2000
~GMEM_ZEROINIT = $40, Initialisiert den Speicherinhalt mit Null

2.Parameter: Size& (Größe des Speichers in Byte)



Rückgabewert:

Im Fehlerfalle 0, ansonsten Handle des allozierten Speicherobjekts

Beispiel:

KompilierenMarkierenSeparieren
Def 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)

EndIf



GlobalLock, GlobalReAlloc, GlobalFree

 
24.05.2005  
 



Salve
 
24.05.2005  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

1.408 Betrachtungen

Unbenanntvor 0 min.
Ernst27.04.2016
Michael Borowiak22.12.2012

Themeninformationen

Dieses Thema hat 2 Teilnehmer:

iF (1x)
unbekannt (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