Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.01.20;
Скачать: CL | DM;

Вниз

Усечение файла   Найти похожие ветки 

 
Separator ©   (2003-01-09 08:25) [0]

Как можно удалить n-ое количетво байт в начале файла?


 
MBo ©   (2003-01-09 08:31) [1]

скопировать нужную часть в новый файл


 
Separator ©   (2003-01-09 09:15) [2]

А по другому никак нельзя?


 
Reindeer Moss Eater   (2003-01-09 09:16) [3]

скопировать нужную часть в этот же файл


 
Separator ©   (2003-01-09 09:17) [4]

Ну ладно, тупой вопрос похоже :)


 
KA_   (2003-01-09 09:19) [5]

Попробуй с помощью TFileStream - открой файл и установи свойство Size.


 
KA_   (2003-01-09 09:21) [6]

Sorry! Не въехал в вопрос :)


 
Reindeer Moss Eater   (2003-01-09 09:21) [7]

И что должно получиться?


 
ValeraVV ©   (2003-01-09 11:36) [8]

Блоками сместить данные в начало файла и обрезать, все.


 
DarkGreen ©   (2003-01-09 11:51) [9]

The SetFilePointer function moves the file pointer of an open file.
DWORD SetFilePointer(
HANDLE hFile, // handle of file
LONG lDistanceToMove, // number of bytes to move file pointer
PLONG lpDistanceToMoveHigh, // address of high-order word of distance to move
DWORD dwMoveMethod // how to move
);

The SetEndOfFile function moves the end-of-file (EOF) position for the specified file to the current position of the file pointer.

BOOL SetEndOfFile(

HANDLE hFile // handle of file whose EOF is to be set
);


 
DarkGreen ©   (2003-01-09 11:52) [10]

Сорри, невнимательно прочитал вопрос :-/


 
Tano ©   (2003-01-09 22:04) [11]

procedure CutFirst(FileName:String; DelCount :Integer);
var
F: File;
P :^Byte;
BlockSize, L :Integer;
begin
AssignFile(F,FileName);
Reset(F,1);
L:=FileSize(F);
BlockSize:=L-DelCount;
//--- перемещаем данные из позиции после вырезаемых байт в начало
GetMem(P,BlockSize);
Seek(F, DelCount);
BlockRead(F,P^,BlockSize);
Seek(F, 0);
BlockWrite(F,P^,BlockSize);
//---
FreeMem(P,L);
Seek(F, L-DelCount);
Truncate(F);
CloseFile(F);
end;

Подходит для небольших файлов (которые поместятся в ОЗУ). Для больших нужно просто перемещать данные поблочно (сколько хватает памяти).
у меня на Duron600/160Mb/20Gb(7200rpm) из файла в 17,5Mb вырезала первые 2 байта за 2,7 сек. Чем больше нужно вырезать, тем быстрее сработает.



Страницы: 1 вся ветка

Текущий архив: 2003.01.20;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.019 c
14-62821
Kair
2003-01-02 14:36
2003.01.20
WinAPI. Что это такое?


1-62577
Ya Vasya
2003-01-07 20:04
2003.01.20
FreeReport


8-62676
Ach_Den
2002-09-17 13:20
2003.01.20
---|Ветка была без названия|---


8-62672
reticon
2002-09-29 02:06
2003.01.20
перерисовка окна


14-62774
Сатир
2002-12-28 13:33
2003.01.20
Задача для разминки мозгов - практичный вариант