Нет простого способа удалить что-либо из начала файла в Windows.Вы должны либо скопировать файл в другой файл, либо удалить оригинал и переименовать целевой файл, либо скопировать все данные в файле на несколько байт назад, а затем обрезать файл.Если файл небольшой и может быть загружен в память, последний метод становится довольно простым.
Следующий фрагмент кода реализует последний подход с полноразмерным буфером памяти.
var
fs: TFileStream;
ms: TMemoryStream;
begin
fs := TFileStream.Create('somefile', fmOpenReadWrite); // catch errors here!
try
ms := TMemoryStream.Create;
try
ms.CopyFrom(fs, 0);
ms.Position := 42; // head bytes to skip
fs.Position := 0;
fs.CopyFrom(ms, ms.Size - ms.Position);
fs.Size := fs.Position;
finally FreeAndNil(ms); end;
finally FreeAndNil(fs); end;
end;