Array aus einer dll uebergeben

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
spacewalker
Beiträge: 48
Registriert: 15.07.2005 15:22
Wohnort: Stuttgart

Array aus einer dll uebergeben

Beitrag 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 ?
Benutzeravatar
spacewalker
Beiträge: 48
Registriert: 15.07.2005 15:22
Wohnort: Stuttgart

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