ctypes Array von Struckturen

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
alti23
User
Beiträge: 11
Registriert: Dienstag 29. März 2011, 12:56

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
Zuletzt geändert von Anonymous am Dienstag 29. März 2011, 13:59, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Code-Tags gesetzt.
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?
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Und dann heißt es natürlich noch Strukturen ;-)
Das Leben ist wie ein Tennisball.
alti23
User
Beiträge: 11
Registriert: Dienstag 29. März 2011, 12:56

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__
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()`.
alti23
User
Beiträge: 11
Registriert: Dienstag 29. März 2011, 12:56

Komme an keinen traceback ran. Hmmm.
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

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.
Das Leben ist wie ein Tennisball.
alti23
User
Beiträge: 11
Registriert: Dienstag 29. März 2011, 12:56

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()
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.
Antworten