wie in diesem Thread beschrieben Aktion Schreibweise in UNSYNCEDLYRICS
habe ich versucht, Schreibweisen zu vergleichen - eigentlich sollte rauskommen, wo reine Großschreibung vorkommt.
Als Ergebnis gibt es allerdings zu wenig oder zu viele Treffer, was darauf hindeutet, dass die Schachtelung von $eql($upper(...
nicht zu den erwarteten Umformungen führt.
In der Tag liefert als Spalte definiert der Ausdruck
$if($eql(%artist%,$upper(%artist%)),1,0)
für z.B. den Eintrag DARKNESS und genauso Darkness das Ergebnis 1
faszinierender Weise allerdings für den Eintrag "Ebba Grön" eine 0.
Das lässt sich für andere EInträge mit Umlauten oder Accents ebenfalls feststellen. Das ß fällt nicht darunter
Kurz und gut: ich glaube, dass die Handhabung der Schreibweisen und Sonderzeichen bei der Umstellung der Basisroutinen durcheinandergekommen ist und damit logische Vergleiche schwieriger sind.
So, ein paar mehr Tests:
Der Ausdruck
$if($eql(%artist%,$upper(%artist%)),1,0)
zeigt mit ARTIST = "Ebba Grön" 0 -> das hätte ich erwartet
zeigt mit ARTIST = "EBBA GRÖN" 1 -> das hätte ich erwartet
zeigt mit ARTIST = "America" 1 -> das habe ich nicht erwartet
zeigt mit ARTIST = "Culcha Candela" 1 -> das habe ich nicht erwartet
Modifiziere ich den Ausdruck zu
$if($eql('%artist%','$upper(%artist%)'),1,0)
werden alle obigen Beispiele als 0 gezeigt.
Allerdings wird auch "AMERICA" und "EBBA GRÖN" als 0 gezeigt.
Habe ich jetzt einen Denkfehler oder ist da doch ne Macke?
Also, ich hab mir das jetzt mal angesehen und folgendes entdeckt:
$eql() hat einen Fehler wenn die Zeichenketten Umlaute enthalten
$eql() vergleicht ohne Berücksichtigung der Groß-/Kleinschreibung
Ich werde jetzt natürlich den Fehler mit den Umlauten in der $eql() Funktion beheben jedoch das bisherige Verhalten bzgl. Groß-/Kleinschreibung beibehalten und die Dokumentation entsprechend ergänzen.
Zusätzlich dazu werde ich noch eine Funktion $StrCmp() einbauen, die den Vergleich zweier Zeichenketten unter Berücksichtigung der Groß-/Kleinschreibung durchführt.