Seite 1 von 1

Array aus einer dll uebergeben

Verfasst: 13.10.2005 10:50
von spacewalker
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 ?

Verfasst: 13.10.2005 11:38
von spacewalker
Hmm habe glaube die Loesung gefunden:

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
hauptprogramm:

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
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.