![]() |
Klasse TGUIDList: Liste von TGUID
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
da ich gerade viel mit GUID arbeiten muß, habe ich eine (sehr) einfache Listenklasse dafür geschrieben. Ist im Grunde nur ein Array von TGUID mit ein paar Helper-Funktionen drumherum. Das Schreiben war auch nicht sonderlich aufwendig, aber vielleicht kann sich mal jemand damit etwas Arbeit sparen, darum poste ich es hier:
Delphi-Quellcode:
Ich hoffe, es sind keine Flüchtigkeitsfehler drin. Feedback ist jederzeit gerne willkommen. unit UTGUIDList; interface type TGUIDList = class private FGUIDList: Array of TGUID; FCount: Integer; function GetItem(Index: Integer): TGUID; procedure SetItem(Index: Integer; const Value: TGUID); function GetItemString(Index: Integer): string; procedure SetItemString(Index: Integer; const Value: string); public constructor Create; virtual; destructor Destroy; override; property Item[Index: Integer]: TGUID read GetItem write SetItem; default; property ItemString[Index: Integer]: string read GetItemString write SetItemString; procedure Clear; function Add(aGUID: TGUID): Integer; function AddFromString(aGUIDString: string): Integer; procedure Delete(Index: Integer); overload; function Delete(aGUID: TGUID): boolean; overload; function IndexOf(aGUID: TGUID): Integer; overload; function IndexOf(aGUIDString: string): Integer; overload; function IsInList(aGUID: TGUID): boolean; overload; function IsInList(aGUIDString: string): boolean; overload; property Count: Integer read FCount; end; implementation uses SysUtils; { TGUIDList } function TGUIDList.Add(aGUID: TGUID): Integer; begin inc(FCount); setlength(FGUIDList, FCount); FGUIDList[FCount-1] := aGUID; result := FCount-1; end; function TGUIDList.AddFromString(aGUIDString: string): Integer; begin result := Add(StringToGUID(aGUIDString)); end; procedure TGUIDList.Clear; begin FCount := 0; setlength(FGUIDList, FCount); end; constructor TGUIDList.Create; begin inherited; Clear; end; procedure TGUIDList.Delete(Index: Integer); var i: Integer; begin for i := Index to FCount-2 do begin FGUIDList[i] := FGUIDList[i+1]; end; dec(FCount); setlength(FGUIDList, FCount); end; function TGUIDList.Delete(aGUID: TGUID): boolean; //true if aGUID was found and deleted var i: Integer; begin result := false; i := IndexOf(aGUID); if i<0 then exit; Delete(i); result := true; end; destructor TGUIDList.Destroy; begin Clear; inherited; end; function TGUIDList.GetItem(Index: Integer): TGUID; begin result := FGUIDList[Index]; end; function TGUIDList.GetItemString(Index: Integer): string; begin result := GUIDToString(FGuidList[Index]); end; function TGUIDList.IndexOf(aGUID: TGUID): Integer; //result := -1 if aGUID was not found var i: integer; begin result := -1; for i := 0 to FCount-1 do begin if IsEqualGUID(aGUID, FGUIDList[i]) then begin result := i; break; end; end; end; function TGUIDList.IndexOf(aGUIDString: string): Integer; //result := -1 if aGUIDString was not found begin result := IndexOf(StringToGUID(aGUIDString)); end; function TGUIDList.IsInList(aGUID: TGUID): boolean; begin result := IndexOf(aGUID) >= 0; end; function TGUIDList.IsInList(aGUIDString: string): boolean; begin result := IsInList(StringToGUID(aGUIDString)); end; procedure TGUIDList.SetItem(Index: Integer; const Value: TGUID); begin FGUIDList[Index] := Value; end; procedure TGUIDList.SetItemString(Index: Integer; const Value: string); begin FGUIDList[Index] := StringToGUID(Value); end; end. Beste Grüße, Philipp PS: Ich selbst benutze D7, aber vermutlich funktioniert dieser Code auch bei viel älteren Versionen. Welche Angabe sollte ich denn hier unter "Ab Delphi Version" eintragen? |
Re: Klasse TGUIDList: Liste von TGUID
Hi,
kann man nicht einfach eine tStringlist dafür benutzen ? :gruebel: Was ist an deiner Klasse so besonderes ? Und das dynamische Array ist ja wohl besonders langsam. Gruss |
Re: Klasse TGUIDList: Liste von TGUID
Zitat:
Zitat:
Zitat:
Grüße, Philipp |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:08 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