![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#9
|
|||
|
|||
|
форумчане препод вернул, вот что пишет Добавление: что определяет параметр 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; |