
07.10.2014, 15:55
|
|
Местный
|
|
Регистрация: 09.11.2010
Сообщения: 499
Репутация: 10
|
|
Как-то так
Код:
function TRam.AddSegment (const Segment: TSegment; Index: integer): integer;
var
i,j,tmp: integer; // переменные локальные
begin
Result:=-1;
// контроль параметров
if Index >= FCount then Exit;
if Index < 0 then Exit;
// сначала проверка необходимости вставки
// это на случай, если нужны уникальные номера
// если не надо, то следующий цикл комментируем
for i:= 0 to FCount-1 do begin
if FRam[i].GetNum = Segment.GetNum then begin
Result:=i;
Exit;
end;
end;
// теперь посмотрим, есть ли место в массиве
FCount:=GetCount+1; // увеличение счётчика
if High(FRam) >= FCount then begin
//место есть, ничего делать не надо
end else begin
// надо увеличивать
// расширение массива в 2 раза
setlength(FRam,length(FRam) *2);
end;
// сдвигаем
for i:= FCount downto (Index+1) do
FRam[i] := FRam[i-1];
// записываем
FRam[Index]:=Segment;
//выдаём - куда записали
Result:=Index;
end;
|