![]() |
Re: TList.Sort Rückwärts?
Zitat:
Und wenn dir das immer noch zu viel Syntax-Gewurstel drum herum ist, dann nutze doch die anonymen Methoden von D2009: TList<T> im Zusammenspiel mit TDelegatedComparer<T>. |
Re: TList.Sort Rückwärts?
Zitat:
Delphi-Quellcode:
soll ich
function PublishedCompare(Item1, Item2: Pointer): Integer;
begin Result := CompareValue(TVersion(Item1).PublishedTime, TVersion(Item2).PublishedTime); end; function PublishedCompareB(Item1, Item2: Pointer): Integer; begin Result := -CompareValue(TVersion(Item1).PublishedTime, TVersion(Item2).PublishedTime); end;
Delphi-Quellcode:
aufrufen? Nicht wirklich "weniger"...
function PublishedCompare(Item1, Item2: Pointer): Integer;
begin Result := CompareValue(TVersion(Item1).PublishedTime, TVersion(Item2).PublishedTime); end; function PublishedCompareB(Item1, Item2: Pointer): Integer; begin Result := PublishedCompare(Item2, Item1); end; Am elegantesten wäre es direkt bei TList:
Delphi-Quellcode:
procedure QuickSort(SortList: PPointerList; L, R, F: Integer;
SCompare: TListSortCompare); var I, J: Integer; P, T: Pointer; begin repeat I := L; J := R; P := SortList^[(L + R) shr 1]; repeat while F*SCompare(SortList^[I], P) < 0 do Inc(I); while F*SCompare(SortList^[J], P) > 0 do Dec(J); if I <= J then begin if I <> J then begin T := SortList^[I]; SortList^[I] := SortList^[J]; SortList^[J] := T; end; Inc(I); Dec(J); end; until I > J; if L < J then QuickSort(SortList, L, J, SCompare); L := I; until I >= R; end; procedure TList.Sort(Compare: TListSortCompare; Backwards : Boolean = False); var F : Integer; begin if Backwards then F := -1 else F := 1; if (FList <> nil) and (Count > 1) then QuickSort(FList, 0, Count - 1, F, Compare); end; Zitat:
2. Gibt es irgendwo ein Tut :P ? MfG xZise |
Re: TList.Sort Rückwärts?
Zitat:
![]() Zitat:
![]() |
Re: TList.Sort Rückwärts?
Ahcso ich kannte "DRY" bisher noch nicht ;)
MfG xZise |
Re: TList.Sort Rückwärts?
Moinsen, mir ist gerade eben was aufgefallen bei den Soßen von Classes.pas:
Delphi-Quellcode:
Warum warum warum gibt es das nicht für die TList? Auch erscheint es mir so als wäre TStringList/TStrings fast so wie TList nur mit zusätzlichen Stringoperationen...
TStringListSortCompare = function(List: TStringList; Index1, Index2: Integer): Integer;
MfG xZise |
Re: TList.Sort Rückwärts?
Zitat:
inwiefern würde das dein Problem lösen? Und wieso leitest du dir nicht einfach eine Klasse TListEx ab und fügst der eine Methode SortReverse hinzu? Ist doch perfectly OO. Gruss Reinhard |
Re: TList.Sort Rückwärts?
Moin,
es ging mir bei dem letzten Posting nur darum, dass Borland schon mal daran gedacht hat die Liste nach der sortiert wird mit zu übergeben. TList nämlich tut dies nicht. Das hat mich so ein bisschen enttäuscht, da der Code ja nicht von gestern ist. Sondern schon "uralt" und Borland nicht auf die Idee gekommen ist dies zu ändern. MfG xZise |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:33 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