Seite 1 von 1

Ersatz für #define

Verfasst: 4. Mai 2016, 09:30
von satmax
Für #define habe ich noch keinen Ersatz gefunden? Wie macht man das?

Re: Ersatz für #define

Verfasst: 4. Mai 2016, 10:46
von Herbert
Konstanten können in .WL-Files abgelegt werden.
Einbinden mit EXTERN

z.B. im Code des Projekts, d.h. überall sichtbar

Code: Alles auswählen

EXTERN "KeyConst.WL"
so kannst du überall auf diese Variablen zugreifen, z.B.

Code: Alles auswählen

IF KeyPressed(VK_RETURN) THEN
ab dort, wo du die Konstanten definierst, sind diese sichtbar.
In einem Dialogelement in den global declarations.
Geht für einzelne Konstanten (Variablen) genauso:

Code: Alles auswählen

VK_RETURN is int=0x0d

Re: Ersatz für #define

Verfasst: 4. Mai 2016, 10:49
von Herbert
Du möchtest eventuell auch dir aus Xbase bekannte Schlüsselworte in Windev anwenden:
Da kreiere ich Funktionen, weil Windev mehr kann (z.B. mehr Variablentypen).

Beispiel EMPTY. In Windev ist dies Nospace.
Da ich diese Funktion erweitert anwende, auch für logische und numerische Werte, ergibt das folgende Funktion.

Code: Alles auswählen

PROCEDURE Empty(LOCAL sbuf)
bLok is boolean = False
SWITCH TypeVar(sbuf)
CASE 1		// boolean
	IF sbuf=False THEN
		bLok=True
	END
CASE 2,3,4,5,6,7,8,9,10,11,12		// integer, real
	IF sbuf=0 THEN
		bLok=True
	END
CASE 16,17,18,19,24		// string
	IF NoSpace(sbuf) = "" THEN
		bLok=True 
	END
END
RESULT bLok
So gehts mit bei einigen Dingen. Einen Funktionssatz kannst du überigens als externe Komponente definieren und so in all deine Projekte einbinden.

Re: Ersatz für #define

Verfasst: 5. Mai 2016, 10:24
von satmax
Danke Herbert, das hilft mal weiter.