Короче добился я своей цели, правда огромными усилиями. Использовал функции, написанные в проектах Andy_D и Yegor (
DBF без ODBC).
И самое главное - это работает! и работает быстро.
#winapi
#DEFINE.FILE_SHARE_READ(0x00000001)
#DEFINE.FILE_SHARE_WRITE(0x00000002)
#DEFINE.FILE_SHARE(#FILE_SHARE_READ | #FILE_SHARE_WRITE)
#define.FILE_FLAG_RANDOM_ACCESS(0x10000000)
#define.FILE_BEGIN (0)
protected void DisableIndex(FileName fileName)
{
int hFile;
binary Value = new Binary(1);
int createFile()
{
DLL _winApiDLL = new DLL('KERNEL32');
DLLFunction _createFile = new DLLFunction(_winApiDLL, 'CreateFileA');
;
_createFile.returns(ExtTypes:

Word);
_createFile.arg(ExtTypes::String); // lpFileName
_createFile.arg(ExtTypes:

Word); // dwDesiredAccess
_createFile.arg(ExtTypes:

Word); // dwShareMode
_createFile.arg(ExtTypes:

Word); // lpSecurityAttributes = null
_createFile.arg(ExtTypes:

Word); // dwCreationDisposition
_createFile.arg(ExtTypes:

Word); // dwFlagsAndAttributes
_createFile.arg(ExtTypes:

Word); // hTemplateFile = null
return _createFile.call(fileName, #GENERIC_WRITE, #FILE_SHARE, 0, #OPEN_EXISTING, #FILE_FLAG_RANDOM_ACCESS, 0);
}
void writeFile(int hWnd, Binary Buffer, int size)
{
DLL _winApiDLL = new DLL('KERNEL32');
DLLFunction _writeFile = new DLLFunction(_winApiDLL, 'WriteFile');
int Result;
Binary RetValue = new Binary(4);
int Temp;
_writeFile.returns(ExtTypes:

Word);
_writeFile.arg(ExtTypes:

Word);
_writeFile.arg(ExtTypes::Pointer);
_writeFile.arg(ExtTypes:

Word);
_writeFile.arg(ExtTypes::Pointer);
_writeFile.arg(ExtTypes:

Word);
Temp = _writeFile.call(hWnd,Buffer,size,RetValue,0);
info(int2str(RetValue.dWord(0)));
if (Temp == 0)
{
throw error("Функция WriteFile вернула ошибку " + int2str(WinApi::getLastError()));
}
Result = RetValue.byte(0) + RetValue.byte(1)*256 + RetValue.byte(2)*256*256 + RetValue.byte(3)*256*256*256;
if (Result != size)
{
throw error("Функция WriteFile вызвала ошибку записи в файл");
}
}
int setFilePointer(int handle, int distancel, int moveMethod)
{
DLL _winApiDLL = new DLL('KERNEL32');
DLLFunction _setFilePointer = new DLLFunction(_winApiDLL, 'SetFilePointer');
_setFilePointer.returns(ExtTypes:

WORD);
_setFilePointer.arg(ExtTypes:

WORD, ExtTypes:

WORD, ExtTypes:

WORD, ExtTypes:

WORD);
if (_setFilePointer.call(handle, distancel, 0 , moveMethod) == 0)
return WinApi::getLastError();
else
return 0;
}
;
hFile = createFile();
if (hFile != #INVALID_HANDLE_VALUE)
{
setFilePointer(hfile, 28, #FILE_BEGIN);
value.byte(0,0);
writeFile(hfile, value, 1);
Winapi::closeHandle(hFile);
}
}