openoffice-users-de mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Wolfgang Jäth <jawo.ml.hams...@arcor.de>
Subject Re: Sortierproblem mit Umlauten und Marko
Date Thu, 20 Jul 2017 10:57:54 GMT
Am 20.07.2017 um 11:43 schrieb technik_div@jrsch.de:
> Hallo allerseits,
> 
> ich habe ein Problem mit der Vergleichsabfrage im Makro bei Umlauten. 
> Ich erkläre das verkürzt. Ich offe das reicht.
> 
> Ich habe eine Tabelle mit den Einträgen in Zeilen:
> 
> ...
> 
> Trage
> 
> Über
> 
> Vera
> 
> ...
> 
> Die Sortierfunktion gibt das so richtig aus. Ich würde das auch gerne in 
> dre Reihenfolge lassen
> 
> in den Zellen ergibt =C186>C185 immer WAHR

Ja; das liegt daran, dass Calc in der Lage ist, Texte nach
umgangssprachlichen Kriterien zu sortieren.

> Frage ich aber jetzt in einer Schleife das mittels:
> 
>     a = "Über"
> 
>     b = celle...string 'Eintrag
> 
>     Proof =  a>b
> 
> Dann ergibt proof dass Über größer ist als Vera.

Das liegt daran, dass die Vergleiche in Makros lediglich die ASCII-Werte
der einzelnen Buchstaben vergleichen; und da befinden sich die Werte der
Umlaute zwischen 196-252, während die 'normalen' Buchstaben Werte
zwischen 65-122 haben.

> Gibt es eine Möglichkeit das Problem elegant zu lösen?

Ich fürchte, nein.

> Das folgende Makro macht das noch mal ausführlicher
> 
> Sub Main
> a=""
> titel="Ver"
> aLied= array("Trä","Über","Ver")
> for i=0 to 2
> ilied=alied(i)
> proof=ucase(iLied) > ucase(Titel)
> a=a & ilied & ">" & Titel &"  " & proof & chr(13)
> next i
> msgbox a
> End Sub

Ich würde eine Unterfunktion schreiben, welche die zu vergleichenden
Strings als Parameter empfängt, dann in beiden Strings nach Umwandlung
in Kleinbuchstaben (oder Großbuchstaben, wenn du möchtest) alle(!) "ä"
durch "ae" ersetzt usw., /diese/ beiden Strings miteinander vergleicht,
und das Ergebnis zurück liefert. Ist letztendlich nur eine Sequenz
(copy&paste) von

| vergleichssting1 = Replace(vergleichssting1,"ä","ae")

usw. für alle 4 Umlaute in beiden Strings (wobei ich mir jetzt nicht
ganz sicher bin, ob REPLACE ein originäre Funktion der Makrosprache ist;
evtl. benötigst du auch ein "Option Explicit" am Code-Anfang).

|

Wolfgang
-- 

---------------------------------------------------------------------
To unsubscribe, e-mail: users-de-unsubscribe@openoffice.apache.org
For additional commands, e-mail: users-de-help@openoffice.apache.org


Mime
View raw message