Moin!
Ich moechte ein Array, der innerhalb einer dll dimensioniert und mit floats gefuellt ist, an das hauptprogramm uebergeben. Also nicht ein einzelnes Element, sondern komplett alle auf einen Schlag, in der richtigen Reihenfolge. Wie koennte man sowas realisieren, hat vielleicht jemand eine Idee ? Die Moeglichkeit, die Elemente in ein String mit Trennzeichen
zu schreiben, damit speicher fuellen und deren Adresse zu liefern moechte ich nicht angehen. Eventuell gaebe es einen Weg, die Zahlen
an eine Speicheradresse zu schreiben, und im Hauptprogramm dann auslesen ? Aber wie haellt man mindestens 4 floats getrennt, die an eine adresse gebunden sind? Waere recht interessant,aber ich fuehle mich der herausforderung im sinne einer eleganten loesung recht unterlegen. Weiss jemand einen Rat ?
Array aus einer dll uebergeben
- spacewalker
- Beiträge: 48
- Registriert: 15.07.2005 15:22
- Wohnort: Stuttgart
- spacewalker
- Beiträge: 48
- Registriert: 15.07.2005 15:22
- Wohnort: Stuttgart
Hmm habe glaube die Loesung gefunden:
dll:
hauptprogramm:
Ungeschliffen, aber das System funktioniert.
Natuerlich nur, wenn man eben die Anzahl der Elemente kennt - in meinem Fall ist die Anzahl festgelegt. Sonst koennte man theoretisch noch vorne ein 4-Byte long einfuegen, der die Anzahl der Elemente liefert.
dll:
Code: Alles auswählen
ProcedureDLL GetFloatArray()
adresse = AllocateMemory(4)
PokeF(adresse,2.5)
PokeF(adresse+5,5.2)
PokeF(adresse+9,1.3)
PokeF(adresse+13,3.1)
ProcedureReturn adresse
EndProcedure
Code: Alles auswählen
Procedure test()
adresse = CallFunction(#dll,"GetFloatArray")
Debug PeekF(adresse)
Debug PeekF(adresse+5)
Debug PeekF(adresse+9)
Debug PeekF(adresse+13)
EndProcedure
Natuerlich nur, wenn man eben die Anzahl der Elemente kennt - in meinem Fall ist die Anzahl festgelegt. Sonst koennte man theoretisch noch vorne ein 4-Byte long einfuegen, der die Anzahl der Elemente liefert.