![]() |
|
|
Регистрация | << Правила форума >> | 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; |