![]() |
Sortieren nach DIN bei TStringList;
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Delphi-Freunde*innen,
ich habe u.a. bei Wikipedia gelesen, dass sortieren beim deutschen Alphabet(mit Umlauten) nach DIN 5007 erfolgt. Es gibt 2 Varianten: 1. ä entspricht a, ö = o ü = u, ß = s 2. ä entspricht ae, ö = oe ü = ue, ß = ss. Bei Windows (und TStringList) wird nach Methode 1 sortiert. Ich hatte nun den Ehrgeiz, Methode 2 bei TStringList hinzu zu fügen. Das ist mir gelungen aber nur mit der Methode Sort. Sorted=true und Add('') ist nicht praktikabel. Könnt ihr euch meinen Ansatz mal ansehen, vielleicht gibt es eine einfachere Lösung. Bei Wikipedia gibt es eine Beispiel-Liste. ![]() Zu beachten ist, Goethe muss Goethe bleiben und darf nicht zu Göthe mutieren. Danke und Gruß Willie. |
AW: Sortieren nach DIN bei TStringList;
Zitat:
Aber es wird mit der Sprache des System sortiert. Im Deutschen also Ä nach A, im Englischen Ä nach dem Alphabet man kann auch ganz stupide nach Index der Unicode-Chars sortieren, ohne irgendwelche sprachliche Eigenheiten und es gibt sogar Untrschiede zwischen dem Deutsch der Deutschen, Schweizer, Österreicher und Lichtensteiner. Delphi nimmt standardmäßig ![]() Du kannst aber via
Delphi-Quellcode:
auch eine beliebige andere Art der Sortierung benutzen.
TStringList.CustomSort
z.B. siehe ![]() ![]() sogar ![]() z.B. MAKELANGID oder MAKESORTLCID : LANG_GERMAN + SUBLANG_GERMAN + SORT_GERMAN_PHONE_BOOK siehe Windows.pas : LANG_*, SUBLANG_*, SORT_*, LOCALE_*, ... PS: ![]() ![]() |
AW: Sortieren nach DIN bei TStringList;
Zitat:
"Im Deutschen also Ä nach A" nein Ä = A - nicht unbedingt, sieh dir die Beispielliste in Wikipedia an. Wikipedia ist nicht meine einzige Referenz. Ich kann darauf hinweisen, dass auch in einem analogen Büro das Sortieren wichtig ist. Ich weiß aus eigener Erfahrung, eine falsch abgelegte Akte ist so, als ob man sie verloren hätte Willie. |
AW: Sortieren nach DIN bei TStringList;
Hallo Himitsu,
ich habe die Dateien heruntergeladen. Ich kann den grünen Kommentar-Text mit meinen Augen sehr schlecht lesen, auch wenn ich ihn vergrößere (kontrastarm). Welches Compare würde es denn nach meiner Vorgabe sortieren? Kannst du mir das sagen. So soll es aussehen: Göbel Goethe Göthe Götz Goldmann Willie. |
AW: Sortieren nach DIN bei TStringList;
Delphi-Quellcode:
Hier aus dem Forum.
function DumbItDownFor95(const S1, S2: WideString; CmpFlags: Integer): Integer;
var a1, a2: AnsiString; begin a1 := s1; a2 := s2; Result := CompareStringA(LOCALE_USER_DEFAULT, CmpFlags, PAnsiChar(a1), Length(a1), PAnsiChar(a2), Length(a2)) - 2; end; function MyCompare(SL: TStringList; i1,i2: Integer): Integer; begin SetLastError(0); Result := CompareStringW(LOCALE_USER_DEFAULT or NORM_IGNORECASE, LANG_GERMAN or SUBLANG_GERMAN or SORT_GERMAN_PHONE_BOOK or NORM_IGNORENONSPACE or NORM_IGNORESYMBOLS, PWideChar(SL[i1]), Length(SL[i1]), PWideChar(SL[i2]), Length(SL[i2])) - 2; case GetLastError of 0: ; ERROR_CALL_NOT_IMPLEMENTED: Result := DumbItDownFor95(SL[i1], SL[i2], NORM_IGNORECASE or NORM_IGNORENONSPACE or NORM_IGNORESYMBOLS); else RaiseLastOSError; end; end; So habe ich es kopiert, es bleibt bei der Sortierung Var.1 Ä=A. Willie. |
AW: Sortieren nach DIN bei TStringList;
Versuch mal dies
Delphi-Quellcode:
Result := CompareStringW(MAKELCID(MAKELANGID(LANG_GERMAN, SUBLANG_GERMAN), SORT_GERMAN_PHONE_BOOK),
NORM_IGNORECASE or NORM_IGNORENONSPACE or NORM_IGNORESYMBOLS, PWideChar(SL[i1]), Length(SL[i1]), PWideChar(SL[i2]), Length(SL[i2])) - 2; |
AW: Sortieren nach DIN bei TStringList;
Hallo Uwe so geht es, schwierige Geschichte.
In der Compare-Routine die Umlaute zu ändern, bringt nichts. Gruß Willie. |
AW: Sortieren nach DIN bei TStringList;
Zitat:
|
AW: Sortieren nach DIN bei TStringList;
Hallo Alallart,
für mich als Sehbehinderter ist Edge mit seiner perfekten Vorlesefunktion, auch in englisch, der beste Browser. Seit Windows 10 ist der Windows-PC bestens für Sehschwache geeignet. Da bin ich sehr zufrieden. Mit dem Delphi-Editor komme ich gut zurecht. Habe eben die Farbe für Kommentare von grün auf violett geändert, das hätte ich schon früher machen sollen. Willie. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:57 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz