amiga-news DEUTSCHE VERSION
.
Links| Forums| Comments| Report news
.
Chat| Polls| Newsticker| Archive
.

amiga-news.de Forum > Programmierung > Variablenprüfung in Methodenaufruf [ - Search - New posts - Register - Login - ]

-1- [ - Post reply - ]

2005-11-01, 10:48 h

Reth
Posts: 1860
User
Hallo allerseits,

frage mich, ob so was wie ichs hier versuche auch möglich ist (C++):

((screen != NULL) WA_PubScreen, screen.getScreen(),)

und das Ganze innerhalb einer OpenWindowTags-Anweisung, die dann ungefähr so aussieht:

OpenWindowTags(NULL, WALEFT,...
...
((screen != NULL) WA_PubScreen, screen.getScreen(),)
...
);

D.h. die WAPubScreen Zeile soll nur aufgenommen werden, wenn die Variable screen nicht NULL ist.

Will nicht den ganzen Funktionsaufruf 2 Mal schreiben, einmal mit und einmal ohne Screen.

Oder kann man OpenWindowTags auch das erste Element eines TagItemArrarys übergeben?

Danke schon mal
Ciao

[ - Answer - Quote - Direct link - ]

2005-11-01, 11:31 h

thomas
Posts: 7721
User
@Reth:

Nimm doch

struct Screen *scr = (screen != NULL ? screen.getScreen() : NULL);
...
(scr != NULL ? WA_PubScreen : TAG_IGNORE), scr
...

Gruß Thomas

--
Email: thomas-rapp@web.de
Home: thomas-rapp.homepage.t-online.de/

[ - Answer - Quote - Direct link - ]

2005-11-01, 12:22 h

Reth
Posts: 1860
User
@thomas:

Gute Idee (das hätte mir selbst einfallen müssen)! Danke.
Kenn die API gerad nicht auswendig, aber einen Zeiger auf das erste Tag einer Liste müsste doch auch gehen, oder (mit OpenWindowTagList oder so)?

[ - Answer - Quote - Direct link - ]

2005-11-02, 20:03 h

Holger
Posts: 8116
User
Zitat:
Original von Reth:
Kenn die API gerad nicht auswendig, aber einen Zeiger auf das erste Tag einer Liste müsste doch auch gehen, oder (mit OpenWindowTagList oder so)?

Das ist richtig, aber die TagList muß Du doch trotzdem haben. Und wenn Du keine Struktur fester Größe auf dem Stack aufbauen willst, mußt Du dynamisch Speicher reservieren, was die Sache unnötig verkompliziert.
Die effizienteste Variante sieht so aus, daß Du Dich bei OpenWindowsTags auf die dynamischen Werte beschränkst.

In etwa so:

struct TagItem staticWindowAttr[]={
WA_Title, (ULONG)"tolles Fenster",
WA_CloseGadget, TRUE,
WA_IDCMP, IDCMP_CLOSEWINDOW,
TAG_DONE, 0
};

...

win=OpenWindowTags(NULL, myScreen? WA_WA_PubScreen : TAG_IGNORE, (ULONG)myScreen, TAG_MORE, (ULONG)staticWindowAttr);


mfg
--
Good coders do not comment. What was hard to write should be hard to read too.

[ Dieser Beitrag wurde von Holger am 02.11.2005 um 20:07 Uhr editiert. ]

[ - Answer - Quote - Direct link - ]

2005-11-02, 21:23 h

Reth
Posts: 1860
User
@Holger:

Danke für den Tip.
Das mit der dynamischen Speicherbelegung hab ich schon im Visier.

Allerdings sagt mir der GCC in folgender Zeile:

((screen != NULL) WA_PubScreen : TAG_IGNORE), screen,

'(screen != 0)' cannot be used as a function

screen ist vom Typ struct Screen *

Wieso das denn?


[ - Answer - Quote - Direct link - ]

2005-11-02, 22:26 h

thomas
Posts: 7721
User

Weil du das Fragezeichen vergessen hast. Hast du in deinem ersten Beitrag auch schon. Die Syntax für einen konditionellen Ausdruck ist

bedingung ? positiv : negativ

Gruß Thomas

--
Email: thomas-rapp@web.de
Home: thomas-rapp.homepage.t-online.de/

[ - Answer - Quote - Direct link - ]

2005-11-03, 08:01 h

Reth
Posts: 1860
User
@thomas:

Danke!

Hach bin ich ein Blindfisch!

[ - Answer - Quote - Direct link - ]


-1- [ - Post reply - ]


amiga-news.de Forum > Programmierung > Variablenprüfung in Methodenaufruf [ - Search - New posts - Register - Login - ]


.
Masthead | Privacy policy | Netiquette | Advertising | Contact
Copyright © 1998-2025 by amiga-news.de - all rights reserved.
.