| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > <<Работа с файлами>> |
| Автор: kostik_16 26.1.2004, 23:12 |
| Кто-нибудь знает, как удалить небольшую часть файла, тоесть: Есть файл *.txt, который содержит 10 Кб инф. Мне надо из конца удалить 1 Кб инф., что-бы он имел размер 9 Кб!! Я знаю так: 1) Создаю новый файл *.txt.bak. 2) Копирую в него 9 Кб из *.txt 3) Удаляю *.txt 4) Переименовую *.txt.bak -> *.txt Способ очень громосток на мое мнение, моджно ли это как-нибудь упростить, тоесть тупо задать удаление 1 Кб из конца |
| Автор: p0s0l 26.1.2004, 23:23 |
| Открываешь файл с произвольным доступом, идешь на 9-ый килобайт и пишешь в это место 0 байт, тем самым обрезав файл... |
| Автор: kostik_16 26.1.2004, 23:31 |
| Спасибо, я думал все гараздо труднее! |
| Автор: kostik_16 27.1.2004, 00:44 |
| Не фурычит: [QUOTE] h := CreateFile (pchar(od.FileName), GENERIC_READ + GENERIC_WRITE, FILE_SHARE_READ + FILE_SHARE_WRITE, nil, OPEN_EXISTING, 0, 0); buf := @user; setfilepointer(h,vhod_proc -2, nil, file_begin); writefile(h, buf, 1 , tmp, nil) closehandle(h) Может я чет не так написал |
| Автор: kostik_16 27.1.2004, 00:45 | ||
Не фурычит:
Может я чет не так написал |
| Автор: p0s0l 27.1.2004, 19:59 |
| Поспешил... Делается так: После SetFilePointer вызывай SetEndOfFile(h); |
| Автор: kostik_16 27.1.2004, 22:07 | ||||
Чет не фурычит, может тут неправильно:
Сам код:
|
| Автор: p0s0l 28.1.2004, 19:43 |
| Странно конечно, но у меня работает... Единственное отличие - вместо od.FileName пишу конкретное имя... Может пытаешься обрезать запущенный файл ?... |