Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Sonderzeichen zwischen 2 anderen Zeichen einsortieren (https://www.delphipraxis.net/201844-sonderzeichen-zwischen-2-anderen-zeichen-einsortieren.html)

hoika 2. Sep 2019 19:32

Sonderzeichen zwischen 2 anderen Zeichen einsortieren
 
Hallo,
ich stehe gerade auf dem Schlauch.

Die Anforderung:
Sortiere eine Liste mit Namen. Die Namen haben auch die türkische Sonderzeichen Ç,ç (ASCII 199 und 231).
Ich gehe mal davon aus, dass ich erst mal nur nach dem großen Zeichen sortiere und das nur an der erster Stelle.

Meine aktuelle Funktion ist die hier.
Wie bekomme ich das jetzt so rein, dass die neuen Zeichen zwischen C und D stehen.
Ich denke gerade darüber nach, dass Ç durch C zu ersetzen, wenn der 2. Anfangs-Buchstabe >=D ist,
damit die Sortierung über den ganzen String verlaufen kann.

Wie würdet ihr das lösen?

Delphi-Quellcode:
 
function CompareStrings(const S1, S2: String) : Integer;
  begin
    if S1<S2 then
     Result := -1
    else
     if S1>S2
      then Result := 1
      else Result := 0;
  end;
Ich würde das Sonderzeichen in S1 ersetzen durch C, wenn S2 mit mindestens D beginnt usw.

Aber ich habe im Moment keinen Plan ...

Luckie 2. Sep 2019 20:45

AW: Sonderzeichen zwischen 2 anderen Zeichen einsortieren
 
Ordne jedem Buchstaben einen Integerwert zu und sortiere da nach, irgendwie oder so. (Nicht ganz zu Ende gedacht, aber vielleicht gib es ja einen Anstoß.)

hoika 2. Sep 2019 21:29

AW: Sonderzeichen zwischen 2 anderen Zeichen einsortieren
 
Hallo,
ja, das war auch meine Überlegung.
Das dauert nur ewig (verglichen mit dem aktuellen Code).

p80286 2. Sep 2019 21:48

AW: Sonderzeichen zwischen 2 anderen Zeichen einsortieren
 
Den https://de.wikipedia.org/wiki/Alphab..._nach_Sprachen kennst Du wahrscheinlich schon. Bleibt die Frage warum Du sortieren mußt. Für wen sind die sortierten Listen bestimmt? Muttersprachler erwarten u.U. eine etwas andere Sortierreihenfolge als ASCII-affine Westeuropäer.

Zitat:

ja, das war auch meine Überlegung.
Und wie sah das konkret aus?
Du mußt zwei Strings ja nur bis zum ersten Unterschied vergleichen. U.U. ist es hilfreich die Strings als array of longword zu begreifen!?

Gruß
K-H

hoika 2. Sep 2019 21:51

AW: Sonderzeichen zwischen 2 anderen Zeichen einsortieren
 
Hallo,
Zitat:

Für alle sonstigen (fremdsprachigen) diakritischen Zeichen gilt im deutschsprachigen Raum, dass sie einheitlich weggelassen werden; so auch alle Akzente, Tilde, Makron: é und e, ç und c, ñ und n, č und c, ō und o sind gleich.
Das passt doch für mich ...
Genau so mache ich das jetzt auch.

Warum mache ich das:
Ist ein Kundenwunsch.

p80286 2. Sep 2019 22:04

AW: Sonderzeichen zwischen 2 anderen Zeichen einsortieren
 
Na dann ist ja gut:)

Gruß
K-H

hoika 2. Sep 2019 22:05

AW: Sonderzeichen zwischen 2 anderen Zeichen einsortieren
 
Hallo,
danke noch mal ;)

Zitat:

kennst Du wahrscheinlich schon
Hatte ich nicht mehr auf dem Plan.

Uwe Raabe 2. Sep 2019 22:25

AW: Sonderzeichen zwischen 2 anderen Zeichen einsortieren
 
Hast du das schon mal versucht? Hier unter Rio tut das offenbar genau was du willst:
Delphi-Quellcode:

  Result := AnsiCompareStr(S1, S2);
bwz. wenn es case-insensitiv sein soll:
Delphi-Quellcode:

  Result := AnsiCompareText(S1, S2);

hoika 2. Sep 2019 22:35

AW: Sonderzeichen zwischen 2 anderen Zeichen einsortieren
 
Hallo Uwe,
eigentlich ja, klappt aber wirklich. *verblüfft*


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:06 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz