![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Ksander |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 18 Пол: Мужской Репутация: ![]() ![]() ![]() |
Задача: Добавьте в указанное место файла заданное количество записей начиная с указанного места другого файла.
|
![]() ![]() |
Digitalator |
![]()
Сообщение
#2
|
Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 247 Пол: Мужской Репутация: ![]() ![]() ![]() |
NB: А можно ли использовать индексирование записей в файле? если да, то можно это сделать без использования всяких truncate и переписывания всего файла по первой вставки
А если нет, то примерно так делать надо.. Код var f = file of ftype; temp, ins:^array[1..1] of ftype; fsize, spos, inssize, i: word; begin .... ins - вставляемые записи inssize - к-во inspos - номер записи начала вставки .... fsize = filesize(f) div sizeof(ftype); getmem(temp, (fsize-inspos+1)*sizeof(ftype)) seek(f, inspos-1); for i:=1 to fsize-inspos do read(f, temp^[i]); seek(f, spos-1); truncate(f); for i:=1 to inssize do write(f, ins^[i]); for i:=1 to fsize-inspos do write(f, temp^[i]); freemem(temp); .... end; подправьте где неправильно :p2: Сообщение отредактировано: Digitalator - -------------------- |
![]() ![]() |
![]() |
Текстовая версия | 10.09.2025 2:26 |