Тема: ASCII NULL
Показать сообщение отдельно
Старый 28.01.2009, 08:12   #5  
Eldar9x is offline
Eldar9x
MCTS
Аватар для Eldar9x
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Регистрация: 29.09.2006
Адрес: Казань
Недавно решал подобную задачу, нужно было размер файла изменить. Используются чистые 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);
}

Последний раз редактировалось Eldar9x; 28.01.2009 в 08:24.