Seite 1 von 1

ctypes Array von Struckturen

Verfasst: Dienstag 29. März 2011, 13:38
von alti23
Hallo,

ich möchte ein Array aus Struckturen anlegen.
Mein code sieht so aus:

Code: Alles auswählen

import ctypes

class TtaskInfo(ctypes.Structure):
_pack_ = 1
_fields_ = [("description", ctypes.c_char_p), ("taskId", ctypes.c_ushort), ("taskCycle", ctypes.c_ulong)]

TtaskInfoArr = TtaskInfo * 20
taskInfo1 = TtaskInfoArr()
Ich bekomme folgende Fehlermeldung: External: Error in exec code line 9: 'taskInfo1 = TtaskInfoArr()'

Kann vielleicht jemand helfen

Re: ctypes Array von Struckturen

Verfasst: Dienstag 29. März 2011, 14:03
von BlackJack
@alti23: Bei *dem* Quelltext gibt es erst einmal einen `SyntaxError` wegen der fehlenden Einrückung.

Wo bekommst Du diese Fehlermeldung denn? Und könntest Du den kompletten Traceback zeigen?

Re: ctypes Array von Struckturen

Verfasst: Dienstag 29. März 2011, 14:08
von EyDu
Und dann heißt es natürlich noch Strukturen ;-)

Re: ctypes Array von Struckturen

Verfasst: Dienstag 29. März 2011, 14:12
von alti23
Hallo,

im Originalcode sind die beiden Zeilen korrekt eingerückt.

Der Pythoneditor ist in einer Applikation(DSpace) eingebettet, die Felermeldungen stammen aus dem Log-fenster dieser App.

Da sind folgende 2 Fehler zu finden.

External: Error in exec code line 9: 'taskInfo1 = TtaskInfoArr()'
External: <type 'AttributeError'>: __module__

Re: ctypes Array von Struckturen

Verfasst: Dienstag 29. März 2011, 14:16
von BlackJack
@alti23: Dann liegt das Problem wohl irgendwo beim Zusammenspiel mit dieser Anwendung, denn so alleinstehend oder in einer Python-Shell funktioniert das problemlos.

Kannst Du von der Anwendung irgendwie den normalen, vollständigen Python-Traceback bekommen? Oder ihn notfalls selbst ausgeben? Zum Beispiel mit `traceback.print_exc()`.

Re: ctypes Array von Struckturen

Verfasst: Dienstag 29. März 2011, 14:56
von alti23
Komme an keinen traceback ran. Hmmm.

Re: ctypes Array von Struckturen

Verfasst: Dienstag 29. März 2011, 15:06
von EyDu
Fange doch einfach bei der betreffenden Zeile die Exception ab und schreibe den dazugehörigen Traceback ins Log. Oder in irgend eine Datei, falls kein richtiges Logging existiert.

Re: ctypes Array von Struckturen

Verfasst: Dienstag 29. März 2011, 15:26
von alti23
So sieht mein Log aus:

Traceback (most recent call last):
File "<user input of 'Main Library.Exec'>", line 11, in <module>
File "C:\Programme\Dspace\AutomationDesk\DSPythonModules\AutomationDeskPackages\TAMMain\tam_namespace.py", line 316, in __setitem__
File "C:\Programme\Dspace\AutomationDesk\DSPythonModules\AutomationDeskPackages\TAMMain\tam_namespace.py", line 120, in LogInstance_Update
File "C:\Programme\Dspace\AutomationDesk\DSPythonModules\AutomationDeskPackages\TAMMain\tam_namespace.py", line 68, in IsItemInstance
AttributeError: __module__

in Line 11 steht: taskInfo1 = TtaskInfoArr()

Re: ctypes Array von Struckturen

Verfasst: Dienstag 29. März 2011, 16:01
von BlackJack
@alti23: Das `tam_namespace`-Modul scheint da irgendwo ein `__module__`-Attribut zu erwarten wo keines ist. Das dürfte eine Frage für den Entwickler von dem Code sein.