Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.01.20;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.009 c
3-62402
Борис
2002-12-25 14:00
2003.01.20
Рухнула база IB


14-62787
spb
2002-12-31 07:37
2003.01.20
Всем, кто в этот день на работе


6-62701
badaxe
2002-11-22 11:39
2003.01.20
Список назначеных ip адресов под WIN2K.


14-62744
Smok_er
2002-12-29 14:47
2003.01.20
COMCTL32.DLL


1-62473
qwerty2
2003-01-09 12:20
2003.01.20
Немедленно завершить работу приложения





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский