![]() |
List und Generics
Hi,
kann mir jemand eventuell helfen? Ich habe hier folgenden Code und der funktioniert auch mit dem neuen Compiler, aber ich würde gerne die TList in Generics.Collections nutzen, anstelle der Variante in Classes. Der Grund ist das ich mit beiliegendem Code auch Objekte verwalten will.
Delphi-Quellcode:
unit SortedList;
interface uses Classes; type TSortedList = class(TList) private FCompare: TListSortCompare; protected procedure Notify(Ptr: Pointer; Action: TListNotification); override; public Duplicates: TDuplicates; constructor Create(Compare: TListSortCompare); function Add(Item: Pointer): Integer; function Find(Key: Pointer; var Index: Integer): Boolean; procedure Sort; overload; property Compare: TListSortCompare read FCompare write FCompare; end; implementation constructor TSortedList.Create(Compare: TListSortCompare); begin inherited Create; FCompare := Compare; end; function TSortedList.Find(Key: Pointer; var Index: Integer): Boolean; var Min, Max, Res: Integer; begin Index := 0; result := false; if Count = 0 then exit; Min := 0; Max := Count; repeat Index := (Min + Max) shr 1; Res := FCompare(Key,List[Index]); if Res > 0 then //P > Items[Index] begin Inc(Index); Min := Index; end else begin //P <= Items[Index] if Res = 0 then //speed exit begin result := true; break; end; Max := Index; end; until Max <= Min; end; procedure TSortedList.Sort; begin inherited Sort(FCompare); end; function TSortedList.Add(Item: Pointer): Integer; begin if not Find(Item,result) or (Duplicates = dupAccept) then Insert(result,Item) else result := -1; end; procedure TSortedList.Notify(Ptr: Pointer; Action: TListNotification); begin if (Action = lnDeleted) and (Ptr <> nil) then Dispose(Ptr); end; end. |
AW: List und Generics
Hi Peter666
Wieso verwendest du nicht gleich TObjektList? Wen du TObjectlist für Objekte/Klassen einsetzt und TList weiterhin für Zeiger wie bisher, hast du nach meinem dafürhalten auch einen Übersichtsvorteil. Gruss Delbor |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:48 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