форумчане препод вернул, вот что пишет Добавление: что определяет параметр index? Если номер ячейки массива, то это неправильно.
Я уже писал что массив должен содержать номера сегментов, причем - в произвольном порядке.
Например: 23, 12, 44, 07, 10 ...
Поэтому номер сегмента не обязан совпадать с номером ячейки массива, где он хранится.
Надо организовать поиск сегмента с номером index (аналогично методу удаления), после чего сдвинуть ХВОСТОВУЮ часть вправо.
Совет по методам работы с файлами. Самое простое решение - построчное хранение: записали в строку число сегментов, потом в цикле в ОТДЕЛЬНЫЕ строки - номер сегмента, число страниц и данные о каждой странице (все - в отдельные строки). Это упрощает обратную загрузку, т.к. не требуется разбор строк на отдельные составляющие.
метод удаления:
Код:
function TRam.DelSegment (TSegment: integer): integer;
var
i,j: integer;
begin
Result:=0;
for i:=0 to GetCount-1 do
if FRam[i].GetNum = TSegment then
begin
for j:=i to GetCount-1 do
FRam[j]:= FRam[j+1];
Dec(FCount);
if FCount< Length(FRam) div 2 then
SetLength(FRam,FCount);
Result:= TSegment;
Exit;
end;
end;