$right() funktioniert nicht


#1

... zumindest nicht so, wie ich mir das vorstelle. :slight_smile:

Der Ausdruck

$right(%title%,$len(%title%)-3)

bringt immer den ganzen Titel als Ergebnis.

Hintergrund: In den MP3s steht als Titel "01 Titel1", "02 Titel2", usw.

Die Aktion "Tag Felder formatieren" mit Zielfeld COMMENT (erst mal zum Test) schreibt immer "01 Titel1" in das Kommentarfeld anstatt "Titel1".

Gruß
Michael


#2

Das Problem ist, dass du glaubst ein Minuszeichen würde eine Subtraktion ausführen. Dem ist aber nicht so. Für eine Subtraktion wird die Funktion $sub(x,y) benötigt.


#3

Uuuuh vor den Kopf hau ...

Das ist eben der Unterschied zwischen Glaube und Wissen ... :slight_smile:

Vielen Dank!

Michael


#4

Hey Dano,
ich denke, Michael hatte die gleichen syntaktischen Probleme, nur dass es bei mir ein $eql war.
Wer kommt schon auf die Idee, dass im Skript kein =+- möglich sind, obschon ich schon mit == es mal probiert hatte.

Wo kommt das Script denn her, so dass man einen weiteren Einstieg als in der Doku kommt?

Danke
Wolfgang


#5

Hallo Wolfgang,

alle Skriptbefehle sind in der Hilfe dokumentiert.

Viele Grüße,
Florian


#6

Hallo Florian,
die ist mir bekannt, nur steht da wenig zum Thema Syntax, denn ich hatte ebenso angenommen, dass es Vergleichsoperatoren wie = gibt. Und das hatte ich nicht gefunden und die Fehlersuche ist dann ein ganz besonderes Problem, weil es keine Fehler/Ergebnishinweise oder eine Vorschau, wie das Ergebnis wäre beim gerade ausgewählten Song.
So war ich nur im Blindflug und habe 1 oder 2 Stunden versucht, eine total simple Operation durchzuführen (sind die ersten 5 Zeichen des Commentfeldes " 0000"). Dabei hatte ich $right($trim(%COMMENTg%),2) richtig, nur der Vergleich war ein Problem mit

$if($right($trim(%COMMENTg%),2)=" 0000",a,b ) oder =%s0000,a,b ) oder = 0000,a,b )

Durch Renamen aus Tag mach Dateinamen hatte ich schon mitebkommen, dass jedes Leerzeichen zählt, denn meine ersten Versuche im Naming hatten einige Leerzeichen zu viel :flushed: , dafür war der Code hübscher anzusehen. :smiley:

Im Forum hatte ich bei dieser GEschichte gesucht und zuerst gefunden, dass das Vergleichsobjekt keiner "" bedarf und zu guter letzt hatte ich nochmals nach $if gesucht, um ein Beispiel zu finden und irgendwo hatte ich ein Beispiel was plötzlich mit $eql arbeitete und das kam mir komisch vor. Und so habe ich dann rausgefundenrühere, dass dies korrekt gewesen wäre:
$if($eql($right($trim(%COMMENTg%),2), 0000"),a,b )

Nur hat es mehr als 2 Stunden gekostet, weil ich nie wußte, was los war und woran ich gescheitert bin, denn plötzlich erfüllte jeder Song die Bedingung und so weiter.
Wenn man also einsteigt und sich die jetzige Hilfe auch ausgedruckt mehrach anschaut, kommt nicht dahinter.

Wäre das o.g. Beispiel in der Hilfe enthalten, so hätte ich meine Fehler sofort sehen können.

  1. Vergleichoperation = ist eine Funktion (was mache ich mit < oder > oder <= oder >=, OK, das kann ich mit $and schachteln)
  2. Objekt einfach hinschreiben, ohne "" oder Sonstiges
  3. Jedes Zeichen zählt, also keine Leerzeichen nach Komma
  4. Jede Funktion braucht ein $.... mir ist es schon mehrfach so ergangen, dass alles korrekt war, nur dem anfängliche if fehlt ein $if (weil die Syntax so lang war, war das aus dem sichtbaren Bereich geschoben und der Fehler nur schwer zu finden)

Somit ergänzt doch die gute Hilfe um Scripthinweise, dass

  • es keinen Vergleichsoperator
  • das Vergleichsobjekt egal ob numerisch oder Text ohne "" einfach direkt auf das letzte Zeichen/Komma folgt und direkt dahinter und ohne Space mit , oder ) abgeschlossen wird
  • jede Funktion, auch das kleine if ein $ braucht, um erkannt zu werden.

Und dann macht doch bitte eine kleine Sektion mit Beispielen mit zunehmendem Schwierigkeitsgrad und evtl. auch Negativbeispielen, die nicht gehen (so wie meine Irrwege mit " 0000" und %s0000 und "%s0000")

Bei den RegEX stand ich ebensoauf dem Schlauch, weil ich schon viel rumprogrammiert, aber damit noch nichts zu tun hatte und nicht wußte, wie die funktionieren und aufgebaut sind. Speziell die vielen Klammern sind anfangs irritierend und ich habe schon ein wenig gebraucht, um dahinter zu kommen, dass es ein BEGRIFF ist.

Hier wäre zu Beginn eine kurze Definition :book: und ein Link auf Wikipedia sinnvoll, denn da habe ich mir dann die Infos geholt. Vielleicht ist ein Link auf den RegEX Coach :book: , mit dem ich mich am Wochenende dann mit RegEX vertrauter gemacht habe, ebenso sinnvoll, denn dort kann ich mein Beispieltext eingeben und eine RegEX eingeben und sehen, wie etwas erkannt wird, was * oder + bewirken.

Wenn die Hilfe dort ein wenig aufgebohrt wäre, hätte es mir sehr geholfen, da ich mich erst einmal selber einarbeiten wollte, bevor ich im Forum mich äußere.
Mittlerweile habe ich das Gefühl, besser ins Forum eingeben und gute oder sehr gute Antworten meist schnell bekommen, als 2 Stunden selber probieren. Nur so lerne ich doch recht wenig und komme mir im Irrgarten vor, weil ich nicht weiß, wo ich hingreifen soll.

Ansonsten tolle Sache :music: und ein MUST für itunes Anwender und den Rest der MP3 Galaxie.

Wolfgang