German Eigene Compiler Attribute?

Midimaster

Active Member
Licensed User
schon wieder ich...

Ich würde gerne das Compilieren des Quellcode von Attributen abhängig machen. Dazu müsste ich wissen, wie bei B4A "conditional compiling" genau funktioniert.

Mir geht es darum, für 3 unterschiedliche Versionen des Programms möglichst den gleichen Quellcode zu verwenden: Demo-Version, Standard-Version und Pro-Version. Dafür bräuchte ich am Anfang eine #If-Abfrage des Compilers, woraufhin der Code-Stücke austauscht, etc...

Aber ich weiß nicht, wie man neue Compiler-Atrribute hinzufügt, wie z.b
achtung kein funktionierender Code, nur symbolisch gemeint::
#_DEMO_VERSION = 1
# MY_VERSION = DEMO_VERSION
...

#If MY_VERSION = DEMO_VERSION
     .....
#ElseIf MY_VERSION = PRO_VERSION
     .....
#Else
     .....
#Endif

Gibt es so was und wo finde ich eine Tutorial dazu?
 

Alexander Stolte

Expert
Licensed User
Longtime User
1. Gehe auf "Project"
2. "Build Configurations" anklicken
1594285172314.png

3. Gib der Konfiguration einen Namen
4. gib der Konfiguration wenn nötig einen anderen Paket-Namen
5. für das #If DEMO_VERSION musst du unter "Conditional Symbols" setzen
1594285126015.png

6. Auf "OK" klicken
7. jetzt hast du neben dem Compiler mode, die Möglichkeit die Konfiguration auszuwählen in dem er Kompilieren soll
1594285381683.png


Jetzt kannst du einfach im Code #If DEMO_VERSION schreiben und es wird nur dann Kompiliert wenn du den "Demo"-Modus ausgewählt hast.
 

pucki

Active Member
Licensed User
Das scheint mir nicht sehr komfortabel. Ich werd es mal ausprobieren. Danke

Ist aber die "übliche" Vorgehensweise. Da das ganze B4x Zeug an Visual-Basic angeknüpft ist, ist die Vorgehensweise sogar logisch. Dort macht man es nämlich genau so.
Dort kann ich sogar spezielle Versionen in der Projekt-Verwaltung einstellen.

Ein kleiner Tipp den ich gerne benutze. Ich lege eine Datei in das Paket beim Erstellen. Dann prüfe ich die Existenz dieser Datei.

Ist die Datei vorhanden, setze ich die globale Variabel TESTMODE auf True. I.d.R. bedeutet das Eingabe-Felder mit Testwerten vorzufüllen. Ist nämlich megalästig 1000 x die selben Felder mit den selben Werten zu füllen.

Je nach Variante steht in der Datei auch ein Zahlencode, der dann je nach meiner Laune gewisse Parameter in der Software einstellt. Z.B. Chef-Version mit erweiterten Grundeinstellungen, Modifikation der Rabatte etc.

Der Vorteil bei dieser Methode ist, das man immer den selben Quell-Code hat. Da das ganze durch eine Sub-Routine geregelt wird, kann man sich sogar überlegen ob man eine Manipulation von außen (via Datei) zulässt, oder den Parameter einfach in die LOAD-Routine im Code schreibt.

Ich habe mal eine Software entwickelt, die die Firma für die ich sie entwickelt habe, in mehreren Versionen / Varianten für ihre Großkunden haben wollte. In der Load-Rountine stand nur "Call setze_parameter ("name_der_firma"). Die sub_routine hatte dann viele If name_der_firma = "ssss" then ........... . Damit habe ich das ganze Programm geregelt. Button sind aufgetaucht oder ganze Fenster verschwunden.

Glaub mir bei so einer Software willst du nicht mehrere Versionen pflegen und komische Compiler-Befehle verwalten.

Diese Tricks habe ich unter B4A noch nicht angewandt (Weil ich das was ich hier schreibe nicht veröffentliche) sollten aber hier genau so funktionieren.
Achja, Windows selbst macht es übrigens genau so. Ändert man gewisse (meist undokumentierte) Parameter in der Registry sieht Windows an gewissen Stellen ganz anders aus.


Gruß

Pucki
 
Top