13.01.2014, 18:27
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.
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.