Tecsitel_FactuGES2/Source/Base/Utiles/uIntegerListUtils.pas
david 15113e1a5e - Repaso global
- Habilitado portapapeles

git-svn-id: https://192.168.0.254/svn/Proyectos.Tecsitel_FactuGES2/trunk@392 0c75b7a4-871f-7646-8a2f-f78d34cc349f
2008-05-30 16:56:23 +00:00

62 lines
1.2 KiB
ObjectPascal

unit uIntegerListUtils;
interface
uses
Classes;
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;
end;
implementation
function TIntegerList.GetInteger(Index: integer): integer;
begin
Result := Integer(Items[index]);
end;
procedure TIntegerList.SetInteger(Index: integer; Value: integer);
begin
Items[index] := Pointer(Value);
end;
procedure TIntegerList.Add(Value: integer);
var
Index: integer;
begin
if not Find(Value, Index) then
Insert(Index, Pointer(Value));
end;
function TIntegerList.Find(Value: integer; var Index: Integer): Boolean;
var
L, H, I, C: Integer;
begin
Result := False;
L := 0;
H := Count - 1;
while L <= H do
begin
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;
end;
end;
Index := L;
end;
end.