Announcement

Collapse
No announcement yet.

Strings sortieren

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Strings sortieren

    Hallo Gemeinde,

    wer weiß, wie man folgendes Problem knacken kann:

    ich habe eine Menge von Stringwerten aus einer Tabelle, die in eine ComboBox eingelesen werden. Die Einträge in der Combo sollen sortiert ausgegeben werden. Wenn ich die Eigenschaft "Sorted" auf True stelle, habe ich den Effekt, dass nach der "1" sofort "10", dann "11" bis "19" kommt - ist ja auch logisch. Sieht aber - sorry - blöd aus. Ich habe das Problem jetzt so gelöst, dass ich die Werte aus der Tabelle in ein eindimensionales record mit StrToInt einlese und diesen record an ein array anhänge, welches dann mit einer angepassten Quicksort Routine sortiert wird. Die jetzt sortierten Werte werden dann wieder in Strings umgewandelt und in die ComboBox eingelesen.

    Gibt es da nicht elegantere Lösungen, vor allem weniger aufwändige?

    Gruss
    Uwe

  • #2
    mach einfach aus der 1 eine 01, aus der 2 eine 02 usw...dann sortiert sorted auch richtig. Das ist meines wissens nach die einfachste lösung

    Gruß Uw

    Comment


    • #3
      oder <pre>

      function MySort1(List: TStringList; Index1, Index2: Integer): Integer;
      begin
      Result := StrToInt(List[Index2]) - StrToInt(List[Index1]);
      end;<br>

      function MySort2(List: TStringList; Index1, Index2: Integer): Integer;
      begin
      Result := AnsiCompareText(StringOfChar('0', 32 - Length(List[Index1])) + List[Index1], StringOfChar('0', 32 - Length(List[Index2])) + List[Index2]);
      end;<br>

      var
      L: TStringList;
      begin
      L := TStringList.Create;
      try
      L.Add(); // hier dein strings hinzufügen
      L.CustomSort(MySort1); // oder MySort2
      ComboBox1.Items.Assign(L);
      finally
      L.Free;
      end;
      end;<br>

      </pre>

      Gruß Hage

      Comment

      Working...
      X