Textbaustein mit Macros: Anrede nach Anzahl, Geschlecht

  • Beispiel kopiert von einem anderen Thread:

    Code

    Code
    Liebe%-
    %IF:"%ABToGender"="1":"r":%IF:"%ABToGender"="2":"":%-
    %-
    %IF:"%ABToNamePrefix"<>"":%-
    %-%IF:"%ABToGender"="1":"Herr ":%-
    %-%IF:"%ABToGender"="2":"Frau ":""%-
    :""%-
    %TOFNAME%-
    %IF:"%ABToNamePrefix"<>"":" %TOLNAME":""%-
    %-,

    Ich wußte ja überhaupt nicht, daß man bedingte Auswahlen mit IF machen kann! In der Online-Hilfe hab ich sowas nicht gefunden. Gibts auch %else ? Schleifen?


    Mein Problem ist ein klein wenig anders. Ich denke an eine Vorlage für Adreßbuchgruppen, die ja etwas homogernere Gruppen von Personen repräsentieren.


    Z.B. die Gruppe "Geschwister". Die wird oft als Liste im TO-Feld benutzt, es werden aber auch einzelne und Submengen adressiert.


    Ich kann daraus ein, zwei, drei oder viele adressieren.


    Die ein oder zwei, vielleicht auch noch drei, sollten individuell mit "Liebe" bzw "Lieber" und Vorname angeredet werden, alle oder viele mit "Liebe Geschwister" (wobei mir gerade die Idee aufkommt, daß statt "Geschwister" vielleicht der Name der Gruppe oder besser ein in der Adreßbuchgruppe gespeichertes Stichwort verwendet werden könne, womit das generisch für alle benutzt werden kann).


    Gibts da schon Beispiele, die ich enfach abkupfern könnte? Ich weiß nicht, wie ich die Anzahl der Adressaten ermitteln kann.

  • Gibts auch %else ? Schleifen?

    Ja, aber ohne Makros. Es gibt lediglich ein Makro für %IF. THEN und ELSE werden nur durch Doppelpunkte getrennt. Die Kette lautet deshalb:

    Code
    %IF:<Wert>:<THEN-Wert>:<ELSE-Wert>

    Müsste auch so in der Online-Hilfe stehen, evtl. mit Beispielen.


    Dabei kann natürlich der ELSE-Wert wiederum eine neue %IF-Kette beinhalten. Das ist z.B. im o.g. Beispiel der Fall, soweit ich das schnell überblicken konnte.

  • Es gibt lediglich ein Makro für %IF. THEN und ELSE werden nur durch Doppelpunkte getrennt.

    Ach ja, jetzt erkenn ichs. Das ist das sog. One-LIne-IF oder inline-if, wie sie in vielen Makro-Sprachen vorkommt. Eigentlich kein Kommando zur Ablaufsteuerung, sondern eine Funktion, die je nach Wahrheitswert des ersten Parameters den 2. oder den 3. Paramter als Funktionswert zurückgibt, ggf. geschachtelt.


    So wird der Text verständlicher.


    Aber dann sind die Zeilen 4 bis 8 da oben eine einzige Funktion, allerdings geschachtelt.


    Ist das %- ein Zeichen, das die beiden Zeilen über den Umbruch zu logisch einer einzigen verbinden soll?

  • Ist das %- ein Zeichen, das die beiden Zeilen über den Umbruch zu logisch einer einzigen verbinden soll?

    Ja. Man verwendet es z.B., damit so eine Vorlage übersichtlich wird und man nicht alles in einer einzigen Zeilen schreiben muss. Ich sehe aber gerade, dass das Makro an einigen Stellen unnötig doppelt gesetzt wurde - am Ende der Zeile #4 z.B. und dann wieder am Anfang der Zeile #5, aber solange das nicht stört...

  • zu %-

    Man verwendet es z.B., damit so eine Vorlage übersichtlich wird und man nicht alles in einer einzigen Zeilen schreiben muss.

    Die Logik wäre einfacher zu verstehen, wenn die IF-Funktion in einer Zeile stehen würde.


    Aber wenn das Textfenster sehr schmal ist, dann helfen Zeilenumbrüche, um alles im Fenster zu sehen, ohne horizontal scrollen zu müssen.

  • Die Logik wäre einfacher zu verstehen, wenn die IF-Funktion in einer Zeile stehen würde.

    Wenn du das hier

    Code
    Liebe%IF:"%ABToGender"="1":"r":%IF:"%ABToGender"="2":"":%IF:"%ABToNamePrefix"<>"":%IF:"%ABToGender"="1":"Herr ":%IF:"%ABToGender"="2":"Frau ":"":""

    einfacher verstehst, dann verwende es so. ;)

  • Grässliche Syntax, diese Makros, so unlesbar. Manchmal lohnt sich das Umschreiben.

    The Bat! Pro 9.x BETA (32bit) | Win 11 Pro x64 | GnuPG 2.2.x | XMP + Regula


    Wer mich Er oder der Drache nennt, bekommt von der Drachin Pratze und Feuer zu spüren.