Formatierung mit der $if- bzw. $if2-Anweisung


#1

Ich habe eine Frage zum konkreten Einsatz einer Wenn-Dann-Bedingung. Im Forum habe ein für mich verwertbares Beispiel nicht gefunden. Wie ist die Syntax des Scriptbefehls $if(x,y,z), wenn x wahr ist, wird y zurück geliefert, andernfalls z? Lässt sich als Bedingung auch ein ANDERES Tagfeld verwenden als dasjenige, in dem die Ausführung vorgenommern werden soll? Welche Bedingungen (=, <, >, <>) sind überhaupt möglich? Beispiel: Die Bedingung steht in %language%, die Formatierung soll in %partinset% ausgeführt werden. Ich habe es mit "Tag-Felder formatieren" versucht - leider ohne Erfolg.
Feld: PARTINSET
Formatstring: $if(%language%=CDs,$upper($left(%year%,3))x,$upper($left(%artist%,1)))
Im Klartext:
WENN in %language% "CDs" steht,
DANN soll in %partinset% das Jahr 3-stellig mit x geschieben werden,
SONST der Anfangsbuchstabe des Interpreten.

Den Hintergrund will ich kurz erkären. Ich unterscheide zwischen Interpreten- und Compilation-Alben. Auf Grund der Vielzahl meiner MP3s musste ich zusätzlich eine "vorsortierung" (Buchstabe/Jahrzehnt) einführen, wozu ich die Felder %language% und %partinset%\ zweckentfrendet habe:
%language% Unterscheidung zwischen Interpreten-CD und Compilation-CD, z.B. CD_ und CDs
%partinset% Vorsortierung, z.B. A, B, C, D bzw. 197x, 198x, 199x, 200x usw.

Der Tag-Datei-Konverter sieht dann folgendermaßen aus
bei Nicht-Samplern (Interpreten-Alben) bzw. iTunesCompilation = 0
...\%language%\%partinset%\%artist%\%year% - %album%$num(%track%,2). %title%
bzw.
bei Samplern (Compilation-Alben) bzw. iTunesCompilation = 1
...\%language%\%partinset%\%year%\%album%$num(%track%,2). %title% - %artist%

Ich habe bisher dafür zwei getrennte Formatierungen mit jeweiliger Markierung durchgeführt. Nun denke ich, es müsste doch auch mit einer universellen Formatierung per IF gehen. Wer weiss, ob es überhaupt funktionieren kann?


#2

Das kommt schon hin, aber solche Vergleiche macht man mit Funktionen
Also
$if(%language%=CDs,
wäre
$if($eql(%language%,CDs),


#3

Danke, es hat sofort geklappt. Jetzt habe ich ich Systematik erkannt und kann noch weitere Anwendungen selbst entwerfen.


#4

Mit der Einfügung $if($eql(%language%,CDs),... hat es funktioniert. Ich habe gleich etwas Neues fuer die Ersetzung von ITUNESCOMPILATION ausprobiert "mit Tag-Felder formatieren"
$if($eql(%language%,CDs),$num(1,0),$num(0,0))
... funktioniert auch. Danke für die Hilfe.

Wie sich die IF-THEN-ELSE (oder auch eine CASE)-Abfrage mit regulären Ausdrücken wie

DANN ...
Feld: ARTIST
Regulärer Ausdruck: (.+?) (.+)
Treffer ersetzen durch: $2, $1

SONST ...
Feld: ARTIST
Regulärer Ausdruck: (.+?) (.+) & (.+)
Treffer ersetzen durch: $2, $1 & $3

kombinieren lässt, werde ich noch ausprobieren.


#5

Du kannst das in Tag-Felder formatieren umsetzen mit der $regexp() Funktion.