Einzelnen Beitrag anzeigen

Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.323 Beiträge
 
Delphi XE2 Professional
 
#20

Re: schnellere Alternative zu StringListe.IndexOf() gesucht

  Alt 26. Mai 2010, 19:41
Hallo,

danke für die Antworten!
Aber eine Datenbank find ich dafür ein wenig übertrieben.

Ich versuche jetzt gerade himitsu´s Vorschlag in die Tat umzusetzen, aber ich scheitere an der Vergleichs-function.


Zitat von himitsu:
ach so ist das

nja, dann laß die Liste doch gleich richtig sortieren?
Delphi-Quellcode:
type
  TNaturalStringList = class(TStringList)
  protected
    function CompareStrings(const S1, S2: string): Integer; override;
  public
    constructor Create;
  end;

function TNaturalStringList.CompareStrings(const S1, S2: string): Integer;
begin
  Result := YourNaturalCompare(S1, S2);
  // also der Vergleich aus deinem Compare_NaturalSort
end;

constructor TNaturalStringList.Create;
begin
  Sorted := True;
  Duplicates := dupIgnore;
end;
Delphi-Quellcode:
var StringList_MN: TStringList; // oder TStrings oder was auch immer

StringList_MN := TNaturalStringList.Create;

{...}

StringList_MN.Add(S);

{...}
Ich kann gerade nichts mit der function
function TNaturalStringList.CompareStrings(const S1, S2: string): Integer; anfangen.

Momentan ruf ich so eine Sortierroutine so auf:
    StringList_MN.CustomSort(Compare_NaturalSort); Wobei "Compare_NaturalSort" so
Delphi-Quellcode:
function Compare_NaturalSort(List: TStringList; Index1, Index2: Integer): Integer;
begin
  //Natürlich sortieren (Nummern aufsteigend)
  //benötigt "StrNatComp.pas"
  Result := StrNatCompare(List[Index1], List[Index2]);
end;
ausschaut. Und nun weiss ich leider nicht wie ich das in die obere function einfügen soll.
(Ich muss dazusagen, dass die Sortierroutine nicht von mir ist, sondern aus dem I-Netz)
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat