amiga-news ENGLISH VERSION
.
Links| Forum| Kommentare| News melden
.
Chat| Umfragen| Newsticker| Archiv
.

amiga-news.de Forum > Programmierung > Variablenprüfung in Methodenaufruf [ - Suche - Neue Beiträge - Registrieren - Login - ]

-1- [ - Beitrag schreiben - ]

01.11.2005, 10:48 Uhr

Reth
Posts: 1858
Nutzer
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

[ - Antworten - Zitieren - Direktlink - ]

01.11.2005, 11:31 Uhr

thomas
Posts: 7717
Nutzer
@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/

[ - Antworten - Zitieren - Direktlink - ]

01.11.2005, 12:22 Uhr

Reth
Posts: 1858
Nutzer
@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)?

[ - Antworten - Zitieren - Direktlink - ]

02.11.2005, 20:03 Uhr

Holger
Posts: 8116
Nutzer
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. ]

[ - Antworten - Zitieren - Direktlink - ]

02.11.2005, 21:23 Uhr

Reth
Posts: 1858
Nutzer
@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?


[ - Antworten - Zitieren - Direktlink - ]

02.11.2005, 22:26 Uhr

thomas
Posts: 7717
Nutzer

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/

[ - Antworten - Zitieren - Direktlink - ]

03.11.2005, 08:01 Uhr

Reth
Posts: 1858
Nutzer
@thomas:

Danke!

Hach bin ich ein Blindfisch!

[ - Antworten - Zitieren - Direktlink - ]


-1- [ - Beitrag schreiben - ]


amiga-news.de Forum > Programmierung > Variablenprüfung in Methodenaufruf [ - Suche - Neue Beiträge - Registrieren - Login - ]


.
Impressum | Datenschutzerklärung | Netiquette | Werbung | Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten.
.