else
if (Capacity < 64) then
NewCapacity := Capacity +16
{Π΅ΡΠ»ΠΈ ΡΠ΅ΠΊΡΡΠ°Ρ Π΅ΠΌΠΊΠΎΡΡΡ ΠΌΠ°ΡΡΠΈΠ²Π° 64 ΠΈΠ»ΠΈ Π±ΠΎΠ»ΡΡΠ΅, ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ Π΅Π΅ Π½Π° 25%}
else
NewCapacity := Capacity + (Capacity div 4);
{ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ ΠΌΡ Π½Π΅ Π²ΡΡ ΠΎΠ΄ΠΈΠΌ Π·Π° Π²Π΅ΡΡ Π½ΠΈΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ ΠΌΠ°ΡΡΠΈΠ²Π°}
if (NewCapacity > FMaxElemCount) then begin
NewCapacity := FMaxElemCount;
if (NewCapacity = Capacity) then
rlError (tdeAtMaxCapacity, 'rlExpand', 0);
end;
{ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π½ΠΎΠ²ΡΡ Π΅ΠΌΠΊΠΎΡΡΡ}
Capacity := NewCapacity;
end;
procedure TtdRecordList.rlSetCapacity(aCapacity : integer);
begin
if (aCapacity <> FCapacity) then begin
{Π·Π°ΠΏΡΠ΅ΡΠΈΡΡ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ ΡΠ΅ΡΠ΅Π· ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²}
if (aCapacity > FMaxElemCount) then
rlError(tdeCapacityTooLarge, 'rlSetCapacity', 0);
{ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΈΠ»ΠΈ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡΡ ΠΏΠ°ΠΌΡΡΡ, Π΅ΡΠ»ΠΈ Π΅ΠΌΠΊΠΎΡΡΡ ΠΌΠ°ΡΡΠΈΠ²Π° ΡΠΌΠ΅Π½ΡΡΠ΅Π½Π° Π΄ΠΎ Π½ΡΠ»Ρ}
{$IFDEF Delphi1}
if (aCapacity= 0) than begin
FreeMem(FArray, word(FCapacity) * FElementSize);
FArray := nil
end
else begin
if (FCapacity = 0) then
GetMem( FArray, word (aCapacity) * FElementSize) else
FArray := ReallocMem(FArray,
word(FCapacity) * FElementSize,
word(aCapacity) * FElementSize);
end;
{$ELSE}
ReallocMem(FArray, aCapacity * FElementSize);
{$ENDIF}
{Π΅ΠΌΠΊΠΎΡΡΡ ΡΠΌΠ΅Π½ΡΡΠ°Π΅ΡΡΡ? Π΅ΡΠ»ΠΈ Π΄Π°, ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΡΠ΅ΡΡΠΈΠΊ}
if (aCapacity < FCapacity) then begin
if (Count > aCapacity) then
Count := aCapacity;
end;
{ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ Π½ΠΎΠ²ΡΡ Π΅ΠΌΠΊΠΎΡΡΡ}
FCapacity := aCapacity;
end
end;
ΠΠΎΠ½Π΅ΡΠ½ΠΎ, Π»ΡΠ±ΠΎΠΉ ΠΊΠ»Π°ΡΡ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΎΠΊΠ°Π·Π°Π»ΡΡ Π±Ρ Π±Π΅ΡΠΏΠΎΠ»Π΅Π·Π½ΡΠΌ, Π΅ΡΠ»ΠΈ Π±Ρ Π±ΡΠ»ΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠΈΡΠ°ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΈΠ· ΠΌΠ°ΡΡΠΈΠ²Π°. Π ΠΊΠ»Π°ΡΡΠ΅ TtdRecordList Π΄Π»Ρ ΡΡΠΎΠΉ ΡΠ΅Π»ΠΈ ΠΈΠΌΠ΅Π΅ΡΡΡ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Items. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΌ ΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ Π΄ΠΎΡΡΡΠΏΠ° Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ ΡΡΠΈΡΡΠ²Π°Π½ΠΈΡ rlGetItem. ΠΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°Π½ΠΈΠ΅ Π½Π΅Π½ΡΠΆΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ Π² ΡΠ»Π΅ΠΌΠ΅Π½Ρ, ΠΌΠ΅ΡΠΎΠ΄ rlGetItem Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΌΠ°ΡΡΠΈΠ²Π°. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΈΡΠ°ΡΡ, Π½ΠΎ ΠΈ Π»Π΅Π³ΠΊΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ. ΠΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΡΡΠΎΠΌΡ Π΄Π»Ρ ΡΠ²ΠΎΠΉΡΡΠ²Π° Items Π½Π΅Ρ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° Π·Π°ΠΏΠΈΡΠΈ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ ΠΎΡΠΌΠ΅ΡΠ΅Π½ΠΎ ΠΊΠ»ΡΡΠ΅Π²ΡΠΌ ΡΠ»ΠΎΠ²ΠΎΠΌ default, Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠ΄Π° MyArray[i], Π° Π½Π΅ MyArray.Items[i].
ΠΠΈΡΡΠΈΠ½Π³ 2.8. ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΌΠ°ΡΡΠΈΠ²Π°
function TtdRecordList.rlGetItem(aIndex : integer): pointer;
begin
if (aIndex < 0) or (aIndex >= Count) then
rlError(tdeIndexOutOfBounds, 'rlGetItem', aIndex);
Result := pointer(FArray + (aIndex * FElementSize));
end;
Π ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ ΡΠ΅ΠΉΡΠ°Ρ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ, - ΡΡΠΎ ΠΌΠ΅ΡΠΎΠ΄, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ Π΄Π»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π° Count - rlSetCount. Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΠ²ΠΎΠΉΡΡΠ²Π° Count ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π²ΡΠ΄Π΅Π»ΠΈΡΡ ΠΏΠ°ΠΌΡΡΡ Π΄Π»Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠ°ΡΡΠΈΠ²Π° ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π½Π΅ΠΉ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΡΠΎΠΌΡ, ΠΊΠ°ΠΊ Delphi ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΌΠΈ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈ. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΌΠ΅ΡΠΎΠ΄Ρ Insert ΠΈ Delete Π±ΡΠ΄ΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° Count ΠΏΡΠΈ Π²ΡΡΠ°Π²ΠΊΠ΅ ΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ². Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΠ²ΠΎΠΉΡΡΠ²Π° Count ΡΠ²Π½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π±ΡΠ΄Π΅Ρ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΡ ΡΠ²ΠΎΠΉΡΡΠ²Π° Capacity (ΠΌΠ΅ΡΠΎΠ΄ Insert Π΄Π΅Π»Π°Π΅Ρ ΡΡΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ). ΠΡΠ»ΠΈ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° Count Π±ΠΎΠ»ΡΡΠ΅ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ, Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π²ΡΠ΅Ρ Π½ΠΎΠ²ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π±ΡΠ΄ΡΡ ΡΠ°Π²Π½Ρ Π½ΡΠ»Ρ. Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ, ΠΈΠ½Π΄Π΅ΠΊΡΡ ΠΊΠΎΡΠΎΡΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΈΠ»ΠΈ ΡΠ°Π²Π½Ρ Π½ΠΎΠ²ΠΎΠΌΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², ΡΡΠ°Π½ΡΡ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌΠΈ (ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΡΡΠΈΡΠ°ΡΡ ΡΠ΄Π°Π»Π΅Π½Π½ΡΠΌΠΈ).
ΠΠΈΡΡΠΈΠ½Π³ 2.9. Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² ΠΌΠ°ΡΡΠΈΠ²Π΅
procedure TtdRecordList.rlSetCount(aCount : integer);
begin
if (aCount <> FCount) then begin
{Π΅ΡΠ»ΠΈ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ Π±ΠΎΠ»ΡΡΠ΅ Π΅ΠΌΠΊΠΎΡΡΠΈ ΠΌΠ°ΡΡΠΈΠ²Π°, ΡΠ°ΡΡΠΈΡΠΈΡΡ ΠΌΠ°ΡΡΠΈΠ²}
if (aCount > Capacity) then
Capacity := aCount;
{Π΅ΡΠ»ΠΈ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ Π±ΠΎΠ»ΡΡΠ΅ ΡΡΠ°ΡΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π½ΠΎΠ²ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠ°Π²Π½ΡΠΌΠΈ Π½ΡΠ»Ρ}
if (aCount > FCount) then
FillChar((FArray + (FCount * FElementSize))^, (aCount - FCount) * FElementSize, 0);
{ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ΅ΡΡΠΈΠΊΠ° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²}
FCount := aCount;
end;
end;
ΠΠΎΠ»Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° TtdRecordList ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π½Π° Web-ΡΠ°ΠΉΡΠ΅ ΠΈΠ·Π΄Π°ΡΠ΅Π»ΡΡΡΠ²Π°, Π² ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΎΠ². ΠΠΎΡΠ»Π΅ Π²ΡΠ³ΡΡΠ·ΠΊΠΈ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΎΠ² ΠΎΡΡΡΠΈΡΠ΅ ΡΡΠ΅Π΄ΠΈ Π½ΠΈΡ ΡΠ°ΠΉΠ» TDRecLst.pas. Π ΡΠ°ΠΉΠ»Π΅ Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ ΡΠ°ΠΊΠΆΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ°ΠΊΠΈΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ², ΠΊΠ°ΠΊ First, Last, Move ΠΈ Exchange.
ΠΠΎΠ²ΡΠ΅ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ
Π Delphi 4 ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ Borland Π²Π²Π΅Π»Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ - ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ ΡΠ·ΡΠΊΠ°, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ°ΡΡΠΈΠ²Ρ, ΡΠ°Π·ΠΌΠ΅Ρ ΠΊΠΎΡΠΎΡΡΡ Π½Π° ΡΡΠ°ΠΏΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π΅ ΠΈΠ·Π²Π΅ΡΡΠ΅Π½. ΠΠΎΠ΄, Π²Π½ΠΎΡΠΈΠΌΡΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ΅Π½ ΡΠΎΠΌΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π΄Π»ΠΈΠ½Π½ΡΡ ΡΡΡΠΎΠΊ. ΠΠ°ΠΊ ΠΈ Π΄Π»Ρ ΡΡΡΠΎΠΊ, ΡΠ°Π·ΠΌΠ΅Ρ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΌΠΎΠΆΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ SetLength. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ Π²Π΅Π΄ΡΡ ΡΡΠ΅ΡΡΠΈΠΊΠΈ ΡΡΡΠ»ΠΎΠΊ. Π Π΄Π°ΠΆΠ΅ Π±ΠΎΠ»ΡΡΠ΅, ΡΡΠ½ΠΊΡΠΈΡ Copy ΠΏΠ΅ΡΠ΅Π³ΡΡΠΆΠ΅Π½Π°, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΡΠ°ΡΡΠΈ ΠΌΠ°ΡΡΠΈΠ²Π°. ΠΠ°ΠΊ ΠΈ Π΄Π»Ρ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ², Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ [].
Π Π½Π°ΡΡΠΎΡΡΠ΅ΠΉ ΠΊΠ½ΠΈΠ³Π΅ ΠΌΡ Π½Π΅ Π±ΡΠ΄Π΅ΠΌ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ. ΠΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ΠΈ Π΄ΠΎΡΡΡΠΏΠ½Ρ ΡΠΎΠ»ΡΠΊΠΎ Π² Π²Π΅ΡΡΠΈΡΡ , Π½Π°ΡΠΈΠ½Π°Ρ Ρ Delphi 4 ΠΈ Kylix. Π, ΠΊΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΎΠ½ΠΈ Π½Π΅ ΠΈΠΌΠ΅ΡΡ ΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ, ΠΊΠΎΡΠΎΡΡΡ Π½Π°ΠΌ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΊΠ»Π°ΡΡ TtdRecordList. ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ Π±ΠΎΠ»ΡΡΠ΅ ΡΠ·Π½Π°ΡΡ ΠΎ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΡ ΠΌΠ°ΡΡΠΈΠ²Π°Ρ , ΠΈΠ·ΡΡΠΈΡΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΏΠΎ ΡΠ²ΠΎΠ΅ΠΉ Π²Π΅ΡΡΠΈΠΈ Delphi.
ΠΠ»Π°ΡΡ TList, ΠΌΠ°ΡΡΠΈΠ² ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ
Π‘ ΡΠ°ΠΌΠΎΠΉ ΠΏΠ΅ΡΠ²ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ Π² Delphi ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π» Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² -ΠΊΠ»Π°ΡΡ TList. Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ Π²ΡΠ΅Ρ ΡΠ°Π½Π΅Π΅ Π½Π°ΠΌΠΈ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Π½ΡΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ², TList ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΌΠ°ΡΡΠΈΠ² ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ.
ΠΡΠ°ΡΠΊΠΈΠΉ ΠΎΠ±Π·ΠΎΡ ΠΊΠ»Π°ΡΡΠ° TList
ΠΠ»Π°ΡΡ TList Ρ ΡΠ°Π½ΠΈΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π°. Π£ΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π»ΡΠ±ΡΠΌΠΈ. ΠΠ½ΠΈ ΠΌΠΎΠ³ΡΡ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π½Π° Π·Π°ΠΏΠΈΡΠΈ, ΡΡΡΠΎΠΊΠΈ ΠΈΠ»ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΡ. ΠΠ»Π°ΡΡ ΠΈΠΌΠ΅Π΅Ρ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ Π΄Π»Ρ Π²ΡΡΠ°Π²ΠΊΠΈ ΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², ΠΏΠΎΠΈΡΠΊΠ° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π² ΡΠΏΠΈΡΠΊΠ΅, ΠΏΠ΅ΡΠ΅ΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΈ, Π² ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ Π²Π΅ΡΡΠΈΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°, Π΄Π»Ρ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² ΡΠΏΠΈΡΠΊΠ΅. ΠΠ°ΠΊ ΠΈ Π»ΡΠ±ΠΎΠΉ Π΄ΡΡΠ³ΠΎΠΉ ΠΌΠ°ΡΡΠΈΠ², TList ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ [ ]. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Items ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎΠΌ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΡΠΎ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ i Π²ΠΌΠ΅ΡΡΠΎ MyList.Item[i] ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ MyList[i]. ΠΠ½Π΄Π΅ΠΊΡΠ°ΡΠΈΡ Π² ΠΊΠ»Π°ΡΡΠ΅ TList Π²ΡΠ΅Π³Π΄Π° Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ 0.
ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° Π²ΡΡΠΎΠΊΡΡ Π³ΠΈΠ±ΠΊΠΎΡΡΡ ΠΊΠ»Π°ΡΡΠ° TList, ΠΈΠ½ΠΎΠ³Π΄Π° ΠΏΡΠΈ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
ΠΠ΄Π½Π° ΠΈΠ· ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π²ΡΡΡΠ΅ΡΠ°Π΅ΡΡΡ ΠΎΡΠ΅Π½Ρ ΡΠ°ΡΡΠΎ: ΠΏΡΠΈ ΡΠ½ΠΈΡΡΠΎΠΆΠ΅Π½ΠΈΠΈ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° TList ΠΏΠ°ΠΌΡΡΡ, Π²ΡΠ΄Π΅Π»Π΅Π½Π½Π°Ρ ΠΏΠΎΠ΄ ΠΎΡΡΠ°Π²ΡΠΈΠ΅ΡΡ Π² Π½Π΅ΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ, Π½Π΅ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅ΡΡΡ. Π Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠΎΠ΄Π΅ ΡΡΠΎ Π΄Π°ΠΆΠ΅ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΡΡ ΡΠ²Π΅ΡΠ΅Π½Π½ΡΠΌ, ΡΡΠΎ TList Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡ ΠΏΠ°ΠΌΡΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π΅Π³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ. ΠΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΏΠΈΡΠΊΠΎΠ², Π½Π΅ Π±ΠΎΡΡΡ, ΡΡΠΎ ΠΎΠ½ Π±ΡΠ΄Π΅Ρ ΡΠ΄Π°Π»Π΅Π½ ΠΏΠΎ ΠΎΡΠΈΠ±ΠΊΠ΅. Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ ΡΠΊΠ»ΠΎΠ½Π½Ρ ΡΡΠΈΡΠ°ΡΡ, ΡΡΠΎ TList ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎΡΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ Π»ΡΠ±ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΡΠΎΡΠΌΡ (Ρ.Π΅. ΠΏΡΠΈ ΡΠ½ΠΈΡΡΠΎΠΆΠ΅Π½ΠΈΠΈ ΡΠΎΡΠΌΡ ΡΠ½ΠΈΡΡΠΎΠΆΠ°ΡΡΡΡ ΠΈ Π²ΡΠ΅ Π΅Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ). ΠΠΎ Π² ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΈ TList ΡΡΠΎ Π½Π΅ ΡΠ°ΠΊ, ΠΏΠΎΡΡΠΎΠΌΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ ΠΏΠΎΠ·Π°Π±ΠΎΡΠΈΡΡΡΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΏΡΠΈ ΡΠ½ΠΈΡΡΠΎΠΆΠ΅Π½ΠΈΠΈ ΡΠΏΠΈΡΠΊΠ° ΡΠ΄Π°Π»ΡΠ»ΠΈΡΡ ΠΈ Π²ΡΠ΅ Π΅Π³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ.
ΠΠ΄Π½Π°ΠΊΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π΅ΡΠ΅ ΠΎΠ΄Π½Π° ΡΡΡΠ΄Π½ΠΎΡΠ»ΠΎΠ²ΠΈΠΌΠ°Ρ ΠΎΡΠΈΠ±ΠΊΠ°, ΠΊΠΎΡΠΎΡΡΡ ΠΎΡΠ΅Π½Ρ ΡΠ°ΡΡΠΎ ΡΠΎΠ²Π΅ΡΡΠ°ΡΡ ΠΏΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΊΠΎΠ΄Π° ΡΠ΄Π°Π»Π΅Π½ΠΈΡ Π²ΡΠ΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΈΠ· ΡΠΏΠΈΡΠΊΠ°. ΠΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ ΡΠ»ΡΡΠ°ΡΡ ΠΊΠΎΠ΄ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
for i := 0 to pred(MyList.Count) do begin
if SomeConditionApplies(i) then begin
TObject(MyList[i]).Free;
MyList.Delete(i);
end;
end;
Π³Π΄Π΅ ScmeConditionApplies - Π½Π΅ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ, ΡΠ΄Π°Π»ΡΡΡ ΠΈΠ»ΠΈ Π½Π΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ i.
ΠΡΠ΅ ΠΌΡ ΠΏΡΠΈΠ²ΡΠΊΠ»ΠΈ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΠΈΠΊΠ»Π° Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°ΡΡΡΡ. ΠΠΌΠ΅Π½Π½ΠΎ Π² ΡΡΠΎΠΌ-ΡΠΎ ΠΈ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΠΎΡΠΈΠ±ΠΊΠ°. ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ ΡΡΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°. Π ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΊΠΎΠ΄ Π² ΡΠΈΠΊΠ»Π΅ Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ ΡΡΠΈ ΡΠ°Π·Π°: Π΄Π»Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ² 0, 1 ΠΈ 2. ΠΡΡΡΡ ΠΏΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΡΠΈΠΊΠ»Π° ΡΡΠ»ΠΎΠ²ΠΈΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ. ΠΡΠΈ ΡΡΠΎΠΌ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ 0, Π° Π·Π°ΡΠ΅ΠΌ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ 0 ΡΠ΄Π°Π»ΡΠ΅ΡΡΡ ΠΈΠ· ΡΠΏΠΈΡΠΊΠ°. ΠΠΎΡΠ»Π΅ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠΈΠΊΠ»Π° Π² ΡΠΏΠΈΡΠΊΠ΅ ΠΎΡΡΠ°Π΅ΡΡΡ Π΄Π²Π° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°, Π½ΠΎ ΠΈΡ ΠΈΠ½Π΄Π΅ΠΊΡΡ ΡΠ΅ΠΏΠ΅ΡΡ 0 ΠΈ 1, Π° Π½Π΅ 1 ΠΈ 2. ΠΡΠΈ Π²ΡΠΎΡΠΎΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΡΠΈΠΊΠ»Π°, ΠΏΡΠΈ ΡΠΎΠ±Π»ΡΠ΄Π΅Π½ΠΈΠΈ ΡΡΠ»ΠΎΠ²ΠΈΡ, ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ 1 (ΠΊΠΎΡΠΎΡΡΠΉ, Π΅ΡΠ»ΠΈ Π²Ρ ΠΏΠΎΠΌΠ½ΠΈΡΠ΅, Π±ΡΠ» ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ 2), ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ ΡΠ΄Π°Π»ΡΠ΅ΡΡΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ 1. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π² ΡΠΏΠΈΡΠΊΠ΅ ΠΎΡΡΠ°Π΅ΡΡΡ Π²ΡΠ΅Π³ΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠ»Π΅ΠΌΠ΅Π½Ρ. Π Π΅Π³ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡ 0. ΠΡΠΈ ΡΡΠ΅ΡΡΠ΅ΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΡΠΈΠΊΠ»Π° ΠΊΠΎΠ΄ ΠΏΡΡΠ°Π΅ΡΡΡ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡΡ ΠΏΠ°ΠΌΡΡΡ, ΡΠ°Π½Π΅Π΅ Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΡΡ ΠΏΠΎΠ΄ ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΈΠ½Π΄Π΅ΠΊΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ 2, ΠΈ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΡΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ "list index out of bounds".
ΠΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ Π±ΡΠ»ΠΎ Π±Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΡΠΉ ΡΠΈΠΊΠ», ΠΊΠΎΡΠΎΡΡΠΉ Π±Ρ Π½Π°ΡΠ°Π» ΡΠ΄Π°Π»ΡΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Ρ ΠΊΠΎΠ½ΡΠ° ΡΠΏΠΈΡΠΊΠ°. Π’Π°ΠΊ ΠΌΡ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ.
ΠΠ»Ρ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΡ Π²ΡΠ΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠΏΠΈΡΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄, Π° Π½Π΅ Π²ΡΠ·ΠΎΠ² ΠΌΠ΅ΡΠΎΠ΄Π° Delete Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°:
for i := 0 to pred(MyList.Count) do
TObject(MyList[i]).Free;
end;
ΠΡΠ΅ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠ»Π°ΡΡΠ° TList ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°. ΠΡΠ»ΠΈ ΠΏΠΎΠΏΡΡΠ°ΡΡΡΡ ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ, ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠΎΠ»ΠΊΠ½ΡΡΡΡΡ Ρ ΡΠ°Π·Π½ΠΎΠ³ΠΎ ΡΠΎΠ΄Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ, Π²ΡΠ·Π²Π°Π½Π½ΡΠΌΠΈ ΡΠ΅ΠΌ, ΡΡΠΎ ΠΌΠ΅ΡΠΎΠ΄Ρ TList ΡΠ²Π»ΡΡΡΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ, ΠΊ ΡΠΎΠΌΡ ΠΆΠ΅ ΠΈΠΌΠ΅ΡΡ ΠΏΡΠΈΠ²Π°ΡΠ½ΡΠ΅ ΠΏΠΎΠ»Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ Π΄ΠΎΡΡΡΠΏΠ½Ρ, ΠΈ Ρ.Π΄. ΠΠΎΠΆΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠΎΠ²Π΅ΡΠΎΠ²Π°ΡΡ Π½Π΅ ΠΏΡΡΠ°ΡΡΡΡ ΠΏΠΎΡΠΎΠΆΠ΄Π°ΡΡ Π½ΠΎΠ²ΡΠ΅ ΠΊΠ»Π°ΡΡΡ ΠΎΡ TList.TList - ΡΡΠΎ Π½Π΅ ΡΠΎΡ ΠΊΠ»Π°ΡΡ, Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΡΠ΅ ΠΊΠ»Π°ΡΡΡ. ΠΠ½ Π±ΡΠ» ΡΠΎΠ·Π΄Π°Π½ Π½Π΅ ΡΠ°ΠΊΠΈΠΌ ΡΠ°ΡΡΠΈΡΡΠ΅ΠΌΡΠΌ, ΠΊΠ°ΠΊ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, TString. ΠΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΊΠ»Π°ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΊΠ»Π°ΡΡ TList. ΠΡΠΈΠΌΠ΅Π½ΡΠΉΡΠ΅ Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π΄Π΅Π»Π΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, Π° Π½Π΅ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅.
ΠΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΌ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ ΠΏΠ°ΡΠ°Π³ΡΠ°ΡΠ° Π°Π²ΡΠΎΡ ΠΊΠ½ΠΈΠ³ΠΈ Π½Π΅ Π·Π½Π°Π», ΡΡΠΎ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ Borland ΡΠ΄Π΅Π»Π°Π»Π° Ρ ΠΊΠ»Π°ΡΡΠΎΠΌ TList Π² Π²Π΅ΡΡΠΈΠΈ Delphi 5. Π Delphi 5 ΠΏΠΎ ΠΊΠ°ΠΊΠΈΠΌ-ΡΠΎ Π½Π΅ΠΏΠΎΡΡΠΈΠΆΠΈΠΌΡΠΌ ΠΏΡΠΈΡΠΈΠ½Π°ΠΌ Π±ΡΠ»ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠ° TList Ρ ΡΠ΅Π»ΡΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° - TObjectList.TObjectList ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ² ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ². ΠΠ½ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΠΌΠΎΠ΄ΡΠ»Π΅ Contnrs, ΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΌΡ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΡΡΡΡ ΠΏΠΎΠ·ΠΆΠ΅.