Недавно решал подобную задачу, нужно было размер файла изменить. Используются чистые winapi функции. При этом в файл пишутся те самые нули. Может пригодится :
X++:
int handle;
;
handle = WinAPI::CreateFile("C:\\Temp\\AX.TXT", #CREATE_ALWAYS, #GENERIC_WRITE);
WinAPI::SetFilePointer(handle, 60, 2);
WinAPI::SetEndOfFile(handle);
WinAPI::CloseHandle(handle);
X++:
static int SetFilePointer(int _handle, int _lDistanceToMove, int _dwMoveMethod )
{
DLL _winApiDLL = new DLL('KERNEL32');
DLLFunction _SetFilePointer = new DLLFunction(_winApiDLL, 'SetFilePointer');
_SetFilePointer.returns(ExtTypes::DWord);
_SetFilePointer.arg(ExtTypes::DWord,
ExtTypes::DWord,
ExtTypes::DWord,
ExtTypes::DWord);
return _SetFilePointer.call(_handle, _lDistanceToMove, 0, _dwMoveMethod);
}
static int SetEndOfFile(int _handle )
{
DLL _winApiDLL = new DLL('KERNEL32');
DLLFunction _SetEndOfFile = new DLLFunction(_winApiDLL, 'SetEndOfFile');
_SetEndOfFile.returns(ExtTypes::DWord);
_SetEndOfFile.arg(ExtTypes::DWord);
return _SetEndOfFile.call(_handle);
}