Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Аналог Truncate для TFileStream


Автор: Dapo 6.6.2003, 09:41
Как с помощью TFileStream можно обрезать файл, аналогично ф-ии Truncate(F)?

Автор: Dapo 8.6.2003, 00:49
Неужели никто не знает? Вот подробнее. что я делаю: Для чтения и записи в файл я использую TFileStream, теперь возникла необходимость удаления блока из файла. Алгоритм используется следующий: курсор переводиться на конец удаляемого блока, затем все что после курсора копируется выше на размер удаляемого блока, ну и последнее - файл обрезается на количество байт удаленного блока. Так как обрезать то?

Автор: Dapo 8.6.2003, 02:18
Сейчас проблему обхожу так: создаю Temp-файл в который записываются нужные блоки, удаляю старый файл и переименовываю Temp-файл в исходное название.

Автор: Dapo 10.6.2003, 10:22
Люди! Никто с файлами не работал что ли? Или только писать и читать приходилось, а удалять из файла нет? Ведь вопрос-то скорее всего пустяковый! Неужели все так тупо и делается? Может в АПИ что-то есть? Как тот-же truncate работает?

Автор: Перчес_Анонимус 1.8.2004, 23:32
почему бы и не сделать это трункэйтом?
объявляешь переменную file of byte
в нужный момент
закрываешь ТФайлСтрим <TFileStream>.free
дальше - assignFile(<file of byte>,<your filename>);
seek(<file of byte>,<int64>);
truncate(...
блоки, естессно, проще и быстрей сместить Стримом, обрезать - так. ;)

Автор: Dmitry V.Abramov 2.8.2004, 00:26
Код
 F: TFileStream;
...
 F.Position := 12345;
 SetEndOfFile(F.Handle);

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)