|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
05.05.2012, 14:46 | #1 |
Форумчанин
Регистрация: 23.08.2011
Сообщений: 171
|
Удаление n-байт из позиции m в TFileStream
Всем привет, в общем вопрос такой.
В FileStream загружен файл 900 мб, я перемещаюсь в позицию 3000, как удалить/вырезать с 3001 до 5000 байт?
Каждый день узнаю новое...
|
05.05.2012, 15:11 | #2 |
Участник клуба
Регистрация: 09.11.2007
Сообщений: 1,761
|
Создать TMemoryStream, загрузить в него с 0 по 3000 байт и с 5001 до конца. Освободить TFileStream.Free и сохранить на его место TMemoryStream.SaveToFile
|
06.05.2012, 08:02 | #3 |
Форумчанин
Регистрация: 23.08.2011
Сообщений: 171
|
Пишет ошибку Out of memory
Каждый день узнаю новое...
|
06.05.2012, 08:11 | #4 |
Участник клуба
Регистрация: 09.11.2007
Сообщений: 1,761
|
Значит что-то не так делаете. Давайте свой код.
|
06.05.2012, 08:31 | #5 |
Форумчанин
Регистрация: 23.08.2011
Сообщений: 171
|
Код:
Каждый день узнаю новое...
Последний раз редактировалось Anton911; 06.05.2012 в 08:35. |
06.05.2012, 14:34 | #6 |
Форумчанин
Регистрация: 26.07.2009
Сообщений: 489
|
Родного метода удаления нету, поэтому, придется скопировать в буфер, удалить файл, а потом записать занова.
Если в глубине души вы программист, то, следуя своим наклонностям, вы захотите написать кусок кода.
|
06.05.2012, 14:49 | #7 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Файл вообще-то достаточно большой. Лучше результат тоже в TFileStream, а потом исходный файл удалять, а вновь полученный переименовывать
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
06.05.2012, 15:30 | #8 |
Форумчанин
Регистрация: 23.08.2011
Сообщений: 171
|
Я вот эксперементировал, до 850 мб он нормально записывал, а если больше 850 то out of memory. Чтож Придется через второй FileStream. Спасибо всем за ответы, всем +
Каждый день узнаю новое...
|
08.05.2012, 10:57 | #9 |
Сумрачная тень
Форумчанин
Регистрация: 05.03.2009
Сообщений: 689
|
А знаешь почему так? Скорей всего памяти оперативной у тебя 2 гб стоит и Win7, либо 1 гб и WinXP. Памяти не хватает на большие объемы, вот и получаем AV.
"ковыряю изнутри" (с)
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Объект TFileStream | Aleksey1989 | Помощь студентам | 8 | 01.06.2012 15:44 |
Вопрос про удаление символа с определенной позиции в строке | lagg | Общие вопросы C/C++ | 1 | 15.11.2011 18:45 |
Найти байт максимальным количестов единиц и байт с максмальным количеством нулей и разность (ассемблер) | Beren42 | Помощь студентам | 0 | 15.12.2010 20:32 |
проблемы с TFileStream | andrey4623 | Общие вопросы Delphi | 9 | 01.11.2007 20:44 |
TFilestream | UnD)eaD)Snake | Win Api | 1 | 27.09.2007 21:22 |