unit uIntegerListUtils;
interface
uses
Classes, FactuGES_Intf;
type
TIntegerList = class(TList)
private
function GetInteger(Index: integer): integer;
procedure SetInteger(Index: integer; Value: integer);
public
procedure Add(Value: integer); reintroduce;
function Find(Value: integer; var Index: Integer): Boolean;
property Integers[index: integer]: integer read GetInteger write SetInteger; default;
function ToIntegerArray : TIntegerArray;
function ToString : String;
end;
implementation
SysUtils;
function TIntegerList.GetInteger(Index: integer): integer;
begin
Result := Integer(Items[index]);
procedure TIntegerList.SetInteger(Index: integer; Value: integer);
Items[index] := Pointer(Value);
function TIntegerList.ToIntegerArray: TIntegerArray;
var
i : Integer;
Result := TIntegerArray.Create;
for i := 0 to Count - 1 do
Result.Add(Integers[i]);
function TIntegerList.ToString: String;
AList : TStringList;
AList := TStringList.Create;
try
AList.Add(IntToStr(Integers[i]));
Result := AList.CommaText;
finally
FreeANDNIL(AList);
procedure TIntegerList.Add(Value: integer);
Index: integer;
if not Find(Value, Index) then
Insert(Index, Pointer(Value));
function TIntegerList.Find(Value: integer; var Index: Integer): Boolean;
L, H, I, C: Integer;
Result := False;
L := 0;
H := Count - 1;
while L <= H do
I := (L + H) shr 1;
C := Integers[I] - Value;
if C < 0 then
L := I + 1
else begin
H := I - 1;
if C = 0 then
Result := True;
Index := L;
end.