ich eine einfache TStringList haben. Ich mache einen TStringList.Sort darauf.Wie kann ich TStringList anders zu sortieren in Delphi
Dann merke ich, dass der Unterstrich „_“ Sorten vor dem Großbuchstaben „A“. Dies war im Gegensatz zu einem Paket von Drittanbietern, die den gleichen Text sortierte und _ nach A.
sortiert Nach dem ANSI-Zeichensatz, AZ sind die Zeichen 65 - 90 und _ ist 95. So sieht es aus wie die dritte Partei Paket verwendet diese Reihenfolge und TStringList.Sort ist nicht.
Ich drillte in Muts von TStringList.Sort und es wird mit AnsiCompareStr (Case Sensitive) oder AnsiCompareText (Case Insensitive) sortiert. Ich habe es auf beide Arten versucht, indem ich den CaseSensitive-Wert meiner StringList auf "True" und dann auf "False" gesetzt habe. Aber in beiden Fällen sortiert das "_" zuerst.
Ich kann mich einfach nicht vorstellen, dass dies ein Fehler in TStringList ist. Also muss hier etwas anderes sein, was ich nicht sehe. Was könnte das sein?
Was wirklich wissen müssen, ich ist, wie kann ich meinen TStringList so zu sortieren, zu bekommen, dass sie in der gleichen Reihenfolge wie das andere Paket ist.
Als Referenz Ich bin mit Delphi 2009 und ich bin mit Unicode-Strings in meinem Programm.
So ist die endgültige Antwort ist hier die Ansi vergleicht mit außer Kraft zu setzen, was Sie wollen (zum Beispiel Nicht-ansi vergleicht) wie folgt:
type
TMyStringList = class(TStringList)
protected
function CompareStrings(const S1, S2: string): Integer; override;
end;
function TMyStringList.CompareStrings(const S1, S2: string): Integer;
begin
if CaseSensitive then
Result := CompareStr(S1, S2)
else
Result := CompareText(S1, S2);
end;
Windows-sortiert auch die '_' vor dem' A' so TStringList mindestens consisten mit dem Betriebssystem ist. –
Ergebnisse, die Sie nicht erwarten, bedeutet nicht, dass es ein Fehler ist. Es ist nicht eine Wanze, ist es auf diese Weise des für korrekt den Benutzer (oder OS in Benutzer-Namen) Wahl des Ordnungs- unterstützen. –
Sie schreiben diese Frage mit der Annahme, dass es * ist * eine richtige Art und Weise nicht alphabetische Zeichen zu sortieren. Wo erscheinen Unterstriche in Ihrem Wörterbuch? –