Umlaute im Index
Moderator: Moderatoren
- Jan
- Marvin
- Beiträge: 14655
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Umlaute im Index
Moin,
wenn ich mich recht erinnere gab es in Clipper mal eine Möglichkeit, das Umlautproblem im Index zu umgehen. Normalerweise sind ja im Index Müller und Mueller an komplett unterschiedlichen Positionen eingeordnet. Und natürlich könnte ich jetzt hingehen und das durch ein "Index on StrTran(name, "ü", "ue") " einbauen. Aber mal abgesehen davon, daß das bei mehreren Umlauten und ß ziemlich verschachtelt wird, habe ich dann auch noch das Problem der unterschiedlichen Stringlängen im Index - keine gute Idee. Läßt sich auch irgendwie regeln, macht den Indexausdruck aber nicht einfacher.
Gibt es da etwas, mit dem ich das unter Xbase++ umgehen kann?
Jan
wenn ich mich recht erinnere gab es in Clipper mal eine Möglichkeit, das Umlautproblem im Index zu umgehen. Normalerweise sind ja im Index Müller und Mueller an komplett unterschiedlichen Positionen eingeordnet. Und natürlich könnte ich jetzt hingehen und das durch ein "Index on StrTran(name, "ü", "ue") " einbauen. Aber mal abgesehen davon, daß das bei mehreren Umlauten und ß ziemlich verschachtelt wird, habe ich dann auch noch das Problem der unterschiedlichen Stringlängen im Index - keine gute Idee. Läßt sich auch irgendwie regeln, macht den Indexausdruck aber nicht einfacher.
Gibt es da etwas, mit dem ich das unter Xbase++ umgehen kann?
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- brandelh
- Foren-Moderator
- Beiträge: 15697
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: Umlaute im Index
Die Länge des Strings den die Funktion zurückgibt muss natürlich immer gleich sein, daher hat man kein Längenproblem wenn man alles richtig macht
Ein Problem ist, dass es im deutschen 2 grundsätzliche Regeln für das Einsortieren dieser Umlaute gibt:Jan hat geschrieben: ↑Fr, 23. Feb 2018 8:57 wenn ich mich recht erinnere gab es in Clipper mal eine Möglichkeit, das Umlautproblem im Index zu umgehen.
Normalerweise sind ja im Index Müller und Mueller an komplett unterschiedlichen Positionen eingeordnet ...
Gibt es da etwas, mit dem ich das unter Xbase++ umgehen kann?
https://de.wikipedia.org/wiki/Alphabeti ... he_Sprache
ich kopiere das mal hier rein ...
unter CLIPPER hat man eine OBJ gelinkt, die entweder das eine oder das andere Sortierverfahren nutzte.Deutschland: DIN 5007
Die deutsche Norm DIN 5007-1 beschreibt unter dem Titel „Ordnen von Schriftzeichenfolgen (ABC-Regeln)“ das Sortieren.
DIN 5007 Variante 1 (für Wörter verwendet, etwa in Lexika; Abschnitt 6.1.1.4.1)
ä und a sind gleich
ö und o sind gleich
ü und u sind gleich
ß und ss sind gleich
DIN 5007 Variante 2 (spezielle Sortierung für Namenslisten, etwa in Telefonbüchern; Abschnitt 6.1.1.4.2)
ä und ae sind gleich
ö und oe sind gleich
ü und ue sind gleich
ß und ss sind gleich
Unter Xbase++ gibt es ja SET COLLATION TO GERMAN, wobei ich nichts gefunden habe um welche Variante es sich handelt. Eigentlich sollte damit die Sortierung erledigt sein
Das Problem warum ich aber die von dir verschmähte Funktion nutze ist der, dass ich so mit "ü" auch "Ü" oder "U" oder "UE" etc. finde, eben genau das was ich möchte !
Gruß
Hubert
Hubert
- brandelh
- Foren-Moderator
- Beiträge: 15697
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: Umlaute im Index
was man alles finden kann ... aber eine Erläuterung steht nicht in der Hilfe oder ?
Gruß
Hubert
Hubert
- Jan
- Marvin
- Beiträge: 14655
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Umlaute im Index
Danke für den Hinweis auf DIN. Das dürfte es vermutlich sein. Da aber in der Hilfe außer dem Erwähnen der Einstellung gar nichts dazu gesagt wird, habe ich das mal an Alaska geschickt. Schauen wir mal, was die dazu sagen.
Gab es das zu Clipperzeiten noch nicht? Ich finde das DIN in keinem Clipper-Handbuch.
Jan
Gab es das zu Clipperzeiten noch nicht? Ich finde das DIN in keinem Clipper-Handbuch.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- brandelh
- Foren-Moderator
- Beiträge: 15697
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: Umlaute im Index
unter Clipper war das die NTXGER.OBJ ich meine mich auch an NTXGER2.OBJ zu erinnern, kann die aber nicht im Verzeichnis finden.
Eine DIN.OBJ gibt es, aber die wird wohl nichts mit den NTX Dateien zu tun haben.
Eine DIN.OBJ gibt es, aber die wird wohl nichts mit den NTX Dateien zu tun haben.
Gruß
Hubert
Hubert
- Jan
- Marvin
- Beiträge: 14655
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Umlaute im Index
Antwort von Alaska:
Das muß ich jetzt noch mal etwas testen. Denn die Hilfe zu SetLexRule() finde ich teilweise irritierend.
Und ich muß mal checken wie sich das auf OEM oder ANSI-Systeme auswirkt.
Jan
In der std.ch finde ich dannSupport Alaska Software hat geschrieben:Der Unterschied zwischen COLLATION GERMAN und COLLATION DIN ergibt sich aus der Implementierung des Kommandos in std.ch und collat.ch. Ergo: GERMAN und DIN sind identisch außer einigen LexRules (siehe std.ch).
Code: Alles auswählen
#command SET COLLATION TO DIN => Set( _SET_COLLATION, COLLAT_GERMAN );;
SetLexRule( {{"„","ae"},{"”","oe"},{"","ue"},;
{"Ž","AE"},{"™","OE"},{"š","UE"},;
{"á","ss"}})
Und ich muß mal checken wie sich das auf OEM oder ANSI-Systeme auswirkt.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- brandelh
- Foren-Moderator
- Beiträge: 15697
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: Umlaute im Index
Oh je ... die STD.CH ist in OEM (hab ich mit meinem Texteditor gerade geprüft), so sieht die Zeile im Quellcode aus:
Im Prinzip steht da, dass ein "ä" genauso wie ein "ae" einzusortieren ist, ein "ö" wie ein "oe" und Groß-/Kleinschreibung eine Rolle spielt.
Während wohl GERMAN das normalerweise anders sieht.
Und ich muss bei meiner IsAnsi() Funktion, die Werte aus "COLLAT.CH" statt den Zahlen nutzen, denn dort steht die könnten sich ändern
Code: Alles auswählen
#command SET COLLATION TO DIN => Set( _SET_COLLATION, COLLAT_GERMAN );;
SetLexRule( {{"ä","ae"},{"ö","oe"},{"ü","ue"},;
{"Ä","AE"},{"Ö","OE"},{"Ü","UE"},;
{"ß","ss"}})
Während wohl GERMAN das normalerweise anders sieht.
Und ich muss bei meiner IsAnsi() Funktion, die Werte aus "COLLAT.CH" statt den Zahlen nutzen, denn dort steht die könnten sich ändern
Gruß
Hubert
Hubert
- Jan
- Marvin
- Beiträge: 14655
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Umlaute im Index
Hubert,
exakt.
Mein Problem ist jetzt: Ich habe eine OEM-Oberfläche, also OEM. Die dbf sind ANSI. Der Quellcode ebenfalls ANSI. Ich möchte in einem XbpBrowse alle Müller und Mueller zusammen stehen haben, nach Vornamen sortiert. Mit Collation DIN klappt das jedenfalls nicht. Auch nicht mit Umschreiben auf ANSI (wobei mir gerade einfällt - eventuell muß ich das mit ConvToAnsiCP() machen, damit mein Editor-ANSI das Kompilieren mit der verbundenen Konvertierung nach OE überlebt ...)
Jan
exakt.
Mein Problem ist jetzt: Ich habe eine OEM-Oberfläche, also OEM. Die dbf sind ANSI. Der Quellcode ebenfalls ANSI. Ich möchte in einem XbpBrowse alle Müller und Mueller zusammen stehen haben, nach Vornamen sortiert. Mit Collation DIN klappt das jedenfalls nicht. Auch nicht mit Umschreiben auf ANSI (wobei mir gerade einfällt - eventuell muß ich das mit ConvToAnsiCP() machen, damit mein Editor-ANSI das Kompilieren mit der verbundenen Konvertierung nach OE überlebt ...)
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- brandelh
- Foren-Moderator
- Beiträge: 15697
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: Umlaute im Index
Genau das ist der Grund warum ich mir die Sortierung in meiner Funktion seit Clipper selbst zusammenbaue,
die Sortierung stimmt mit meinen Wünschen überein ( ü wie ue, egal ob groß oder klein) er findet mit ü alle Schreibweisen, genauso wie mit u oder ue ...
die Sortierung stimmt mit meinen Wünschen überein ( ü wie ue, egal ob groß oder klein) er findet mit ü alle Schreibweisen, genauso wie mit u oder ue ...
Gruß
Hubert
Hubert
- brandelh
- Foren-Moderator
- Beiträge: 15697
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: Umlaute im Index
das hatte ich eben überlesen, wie baust du beide Felder zusammen ?
upper( Nachname + Vorname )
sollte nach Vorname Sortieren, wenn die Nachnahmen gleich sind oder durch Indexfunktion (Lexrule) gleich gesetzt werden.
Gruß
Hubert
Hubert
- AUGE_OHR
- Marvin
- Beiträge: 12909
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Umlaute im Index
mit OEM meinst du wohl Hybrid-Modus
sind es FOXDBF
DIN ist IMHO for OEM gedacht ... dein "Problem" ist ANSI
mal so gedacht ...
Code: Alles auswählen
SET COLLATION TO DIN
für ANSI würde man SYSTEM setzen ... wenn da nicht die "Sonderzeichen" wären ...
Code: Alles auswählen
#command SET COLLATION TO JANANSI => Set( _SET_COLLATION, COLLAT_SYYSTEM );;
SetLexRule( {{"ä","ae"},{"ö","oe"},{"ü","ue"},;
{"Ä","AE"},{"Ö","OE"},{"Ü","UE"},;
{"ß","ss"}})
gruss by OHR
Jimmy
Jimmy