Zuweisen eines Arrays aus einem benutzerdefinierten Datentyp

  • VB6

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von Busty.

    Zuweisen eines Arrays aus einem benutzerdefinierten Datentyp

    Hallo, gibt es eine Möglichkeit unter VB6 ein Array (bestehend aus Werttyp-Elementen), welches eine Komponente eines benutzerdefinierten Types ist, an ein anderes Array (bestehend aus den gleichen Werttyp-Elementen) zuzuweisen?

    Visual Basic-Quellcode

    1. Public Type myType
    2. dateDate() As Date
    3. sngTemperature() As Single
    4. ...
    5. End Type
    6. Dim typMyType As myType
    7. Dim sngTmpArray() As Single
    8. Dim sngTemperature() As Single
    9. 'Ein einfach Zuweisung ist so möglich:
    10. sngTmpArray = sngTemperature
    11. 'Ist das Quell-Array eine Komponente eines benutzerdefinierten Typs, ist keine Zuweisung möglich:
    12. sngTmpArray = typMyType.sngTemperature '-> funktioniert nicht!


    Gibt es eine Möglichkeit einer schnellen Zuweisung - also ohne jedes Element des Quell-Arrays einzeln zu kopieren?

    Vielen Dank für eure Unterstützung!
    Du könntest es mit der CopyMemory-API versuchen. Aber wenn du mit einer Schleife das Array durchläufst, musst du nur die Array-Elemente kopieren, nicht die einzelnen Elemente von myType!
    Gruß, Agent Smith 8-)

    activeFlags = (lazy OR weary)

    Lemgo-Verschwörung | Mathematics | VB-Paradise in blau
    Alex: Die Arrays sind alle korrekt dimensioniert - ich habe das Code-Beispiel stark gekürzt.

    Agent: Ich habe es mit RtlMoveMemory schon probiert, erhielt allerdings die Fehlermeldung, dass die Typen nicht kompatibel wären. Sollte es damit doch gehen, dann brächte ich ein genaues Beispiel, denn die aus dem Netz halfen mir nicht weiter...

    Die Arrays (es sind noch mehr Größen neben der Temperatur vorhanden) haben allerdings über eine halbe Millionen Elemente. Sicherlich ließe sich das Array in vertretbarer Zeit einzeln kopieren - allerdings ist dies nicht wirklich elegant.

    Gibt es denn keine Möglichkeit, den Pointer auf das interne Array des Datentypes zu erhalten, um gleich das komplette Array auf einmal zu kopieren?

    Vielen Dank für eure Anregungen!
    Merkwürdig. Bei mir (VBA) funktionieren beide Zuweisungen.

    Sowohl

    Visual Basic-Quellcode

    1. sngTmpArray = sngTemperature
    als auch

    Visual Basic-Quellcode

    1. sngTmpArray = typMyType.sngTemperature

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

    Hallo Roddy,

    da es bei dir geht, musste es an etwas ganz simplen liegen...

    Ich hatte in den Messreihen eine Größe dabei, zu welcher keine Messwerte vorhanden waren - demzufolge mussten hier alle Array-Werte '0' sein!

    Blöderweise, war dies das erste Array, welches ich dann auch zum Test heranzog. Da bei diesem alle Werte Null waren, dachte ich, die Zuweisung hätte nicht geklappt. - Ich hatte einfach die Messwerte einer anderen Messreihe erwartet. :pinch:

    Also alles mein Fehler!!!

    Danke für den Tipp, welcher mich dazu anstieß, den Fehler auf dem "richtigen Level" zu suchen. :)

    Viele Grüße an alle!