Beiträge: 666
Themen: 77
Registriert seit: Oct 2013
Bewertung:
0
Hallo,
Ich dachte ich komme immer an alle Attribute ran mit dem Befehl ?
Warum liefert mir dann das:
ntui_GetAttrByID{AppContext\tuiEngine,"tncEngine",#TUIEA_AREXXPORT,portname.s}
oder auch bei
ntui_GetAttr{AppContext\tuiEngine,#TUIEA_AREXXPORT,portname.s}
nichts zurück ?
Ps:
Habe gerade gesehen im Befehl ntui_GetAttr{} kann man nicht nach Engineattributen suchen, weil keine enthalten sind.
Gibts dafür einen anderen Befehl außer den internen _ntui_GetEngineAttr{} ?
Beiträge: 666
Themen: 77
Registriert seit: Oct 2013
Bewertung:
0
habs jetzt mal so gelöst:
[ab3]*Engine.tuiEngine = ntui_GetEngine{AppContext\tuiEngine}
portname.s = str_Read{&*Engine\rxPortName}[/ab3]
[ATTACHMENT NOT FOUND]
Beiträge: 396
Themen: 8
Registriert seit: Sep 2013
Bewertung:
0
Du darfst noch auf Felder der Structs zugreifen. ntui_GetEngineAttr ist auch nicht erlaubt, oder ;-) (ist das nicht private?)
Du hast schon recht, man kommt mit ntui_GetAttr an alle Sachen ran, an die man auch ran kommen darf.
In deinem Fall hast du nur Amiblitz überschätzt, dass es versteht dass es einen String kopieren soll. ntui_GetAttr gibt lediglich einen Pointer zurück. In einen amiblitz String musst du das selbst konvertieren. Denke dran, dass ntui, zumindest der core, keine Amiblitz3 eigenheiten benutzt da es auch unter C und anderen Sprachen verwendbar sein soll.
Also:
[ab3]portname.s = "<undefined>"
If ntui_GetAttr{*Engine,#TUIEA_AREXXPORT,&*stringPointer.b}
If *stringPointer Then portname = Peek.s(*stringPointer)
End If[/ab3]
EDIT:
[ab3]*Engine.tuiEngine = ntui_GetEngine{AppContext\tuiEngine}[/ab3]
Das ist zwar erlaubt, aber sinnlos. Wenn AppContext\tuiEngine bereits die tuiEngine ist, warum holst du sie neu?
ntui_GetEngine solltest du auf das erste Object machen dass du erzeugst. Danach verwendest du es überall.
Beiträge: 666
Themen: 77
Registriert seit: Oct 2013
Bewertung:
0
Ok, Danke !
Funktioniert !
Wie ich bereits annahm lag es am Pointer...
Beiträge: 396
Themen: 8
Registriert seit: Sep 2013
Bewertung:
0
Dein AppContext\TuiEngine sollte auch ein Pointer auf .tuiEngine sein. Mache dein Programm am besten Syntax 6. Hilft ungemein.
Beiträge: 666
Themen: 77
Registriert seit: Oct 2013
Bewertung:
0
Habs geändert, war wirklich ein Long im Newtype anstatt .tuiEngine
hab auch umgestellt auf syntax 6, war bisher syntax 2.
Danke