CopyMemory was ist das?

  • VB6

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von Mad Andy.

    CopyMemory was ist das?

    Hi, könnt ihr mir bitte erklären was der Folgende Aufruf genau macht?!

    Visual Basic-Quellcode

    1. Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)


    Dabei bitte auch auf das in der Klammer eingehen, also Destination as Any usw., wäre echt super nett!

    MfG


    Edit by Mad Andy:
    VB-Tag eingefügt.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Mad Andy“ ()

    Hi,

    steht in der MSDN drin und ist eigentlich ganz gut erklärt.


    bye ...

    LaMa5.
    Die Wissenschaft wird nie ein besseres Kommunikationssystem in den Büros erfinden können als die Kaffeepause.
    (Autor: Earl Wilson, amerik. Schriftsteller)

    https://www.serviceteam-md.de
    @Lama5: in der MSDN ist die Verwendung gut Erklärt. Mit nem Void-Pointer fangen die meisten VBler aber auch nicht viel an ;)

    @ Baum: der VB-Tag ist bei Einzeilern zwar nicht wirklich notwendig - die API-Deklaration wird dadurch übersichtlicher.

    Die Funktion kopiert [Length] Bytes von der [Source] Adresse/Variable zur [Destination] Adresse/Variable.

    Der erste Teil der Deklaration (bis zu der Klammer) sagt aus, wo die Funktion zu finden ist und wie sie heißt.
    Der Variablentyp Any entspricht einem Void-Pointer (Adresse eines beliebigen Variablentyps) in C++. Bei Any wird das so gelöst, dass man jede Variable übergeben kann (jeden Typ). VB wandelt die Variable in seine Adresse um und übergibt den Wert dann an die API-Funktion.
    Der erste Parameter ist die Ziel-Variable, der zweite Parameter ist die Quell-Variable, der dritte Parameter ist die Anzahl der zu kopierenden Bytes.

    Bei Arrays muss ein Element übergeben werden, nicht der Array:
    Angenommen du hast einen Byte-Array mit 20 Bytes und du willst ab dem 10. Byte 5 Bytes kopieren, sieht das wie folgt aus:

    Visual Basic-Quellcode

    1. Dim b1(19) as Byte
    2. Dim b2(4) as Byte
    3. 'hier Bytes einlesen
    4. CopyMemory b2(0), b1(9), 5