Arrays

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
sevelen
User
Beiträge: 33
Registriert: Dienstag 4. August 2009, 07:34

Hallo,

ich komm noch nicht so ganz klar mit den Arrays in Python. Ich habe vor ein Array zu erzeugen und es dann an eine Funktion (WinDLL) zu übergeben. In der DLL wird es wie folgt erwartet.

Code: Alles auswählen

void ArrayTest(int test[]);
Als nächstes habe ich ein Array in Python erstellt, jetzt kommt allerdings mein Problem wie übergebe ich es?

Code: Alles auswählen

X = array([1,2,3])
mydll.ArrayTest(X)
Währe super wenn mir jemand einen Tipp geben könnte
Benutzeravatar
lutz.horn
User
Beiträge: 205
Registriert: Dienstag 8. November 2005, 12:57
Wohnort: Pforzheim

Für mich als Nicht-Windows-User: woher kommt die Funktion 'array'?
https://www.xing.com/go/invite/18513630.6a91d4
sevelen
User
Beiträge: 33
Registriert: Dienstag 4. August 2009, 07:34

Das is python code kommt aus der numpy
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

lutz.horn hat geschrieben:Für mich als Nicht-Windows-User: woher kommt die Funktion 'array'?
Mit Windows hat das nichts zu tun, aber falls es aus dem array-Modul der Standard-Lib von Python käme, dann fehlte der typecode ..
sevelen
User
Beiträge: 33
Registriert: Dienstag 4. August 2009, 07:34

Kommt aus der NumPy, aber danke für den hinweiß habe es gleich eingebaut

Code: Alles auswählen

X = array([1, 2, 3, 4, 5],'l')
Nur wie bekomme ich das nun übergeben? Ich frage daher weil ich würde vermuten so...

Code: Alles auswählen

mydll.ArrayTest(X)
Dann bekomme ich allerdings "ctypes.ArgumentError: argument 1: <type 'exceptions.TypeError'>: Don't know how to convert parameter 1"
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Schau Dir mal in der ctypes-Doku die Kapitel über Arrays evtl. auch über Pointers an.
MfG
HWK
BlackJack

`ctypes` kann nicht automatisch etwas mit Objekten anfangen, nur weil der Typ zufällig den Namen `array` hat. Du musst schon ein Array übergeben, welches aus den entsprechenden `ctypes`-Typen besteht. Oder schauen, ob Du von Numpy irgendwie die Speicheradresse auf die Daten bekommst und daraus dann einen `ctypes`-Zeiger erstellen kannst.
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

http://www.scipy.org/Cookbook/Ctypes
Hilft das?

Gruß,
Christian
Antworten