|
@@ -129,7 +129,7 @@ type
|
|
procedure PutKeyData(AKey: Pointer; NewData: Pointer);
|
|
procedure PutKeyData(AKey: Pointer; NewData: Pointer);
|
|
procedure PutData(Index: Integer; AData: Pointer);
|
|
procedure PutData(Index: Integer; AData: Pointer);
|
|
public
|
|
public
|
|
- constructor Create(AKeySize: Integer = sizeof(Pointer);
|
|
|
|
|
|
+ constructor Create(AKeySize: Integer = sizeof(Pointer);
|
|
ADataSize: integer = sizeof(Pointer));
|
|
ADataSize: integer = sizeof(Pointer));
|
|
function Add(AKey, AData: Pointer): Integer;
|
|
function Add(AKey, AData: Pointer): Integer;
|
|
function Add(AKey: Pointer): Integer;
|
|
function Add(AKey: Pointer): Integer;
|
|
@@ -286,7 +286,7 @@ begin
|
|
SetCapacity(NewCount);
|
|
SetCapacity(NewCount);
|
|
if NewCount > FCount then
|
|
if NewCount > FCount then
|
|
FillByte(InternalItems[FCount]^, (NewCount-FCount) * FItemSize, 0)
|
|
FillByte(InternalItems[FCount]^, (NewCount-FCount) * FItemSize, 0)
|
|
- else if NewCount < FCount then
|
|
|
|
|
|
+ else if NewCount < FCount then
|
|
Deref(NewCount, FCount-1);
|
|
Deref(NewCount, FCount-1);
|
|
end;
|
|
end;
|
|
FCount := NewCount;
|
|
FCount := NewCount;
|
|
@@ -597,7 +597,7 @@ begin
|
|
while (Result < FCount) and (PT(FList)[Result] <> Item) do
|
|
while (Result < FCount) and (PT(FList)[Result] <> Item) do
|
|
Inc(Result);
|
|
Inc(Result);
|
|
{$warning TODO: Result := -1; does not compile }
|
|
{$warning TODO: Result := -1; does not compile }
|
|
- if Result = FCount then
|
|
|
|
|
|
+ if Result = FCount then
|
|
begin
|
|
begin
|
|
Result := 0;
|
|
Result := 0;
|
|
dec(Result);
|
|
dec(Result);
|
|
@@ -671,7 +671,7 @@ var
|
|
I: Integer;
|
|
I: Integer;
|
|
begin
|
|
begin
|
|
if Find(AKey, I) then
|
|
if Find(AKey, I) then
|
|
- Result := InternalItems[I]
|
|
|
|
|
|
+ Result := InternalItems[I]+FKeySize
|
|
else
|
|
else
|
|
Result := nil;
|
|
Result := nil;
|
|
end;
|
|
end;
|
|
@@ -733,7 +733,7 @@ end;
|
|
function TFPSMap.Find(AKey: Pointer; var Index: Integer): Boolean;
|
|
function TFPSMap.Find(AKey: Pointer; var Index: Integer): Boolean;
|
|
{ Searches for the first item <= Key, returns True if exact match,
|
|
{ Searches for the first item <= Key, returns True if exact match,
|
|
sets index to the index f the found string. }
|
|
sets index to the index f the found string. }
|
|
-var
|
|
|
|
|
|
+var
|
|
I,L,R,Dir: Integer;
|
|
I,L,R,Dir: Integer;
|
|
begin
|
|
begin
|
|
Result := false;
|
|
Result := false;
|
|
@@ -751,7 +751,7 @@ begin
|
|
if Dir = 0 then
|
|
if Dir = 0 then
|
|
begin
|
|
begin
|
|
Result := true;
|
|
Result := true;
|
|
- if Duplicates <> dupAccept then
|
|
|
|
|
|
+ if Duplicates <> dupAccept then
|
|
L := I;
|
|
L := I;
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|