Форум: "Базы";
Текущий архив: 2002.01.31;
Скачать: [xml.tar.bz2];
Внизпотерялся индекс в фоксе, как быть? Найти похожие ветки
← →
DmitryA (2001-12-20 18:29) [10]Ну, ребята! Вы меня просту умилили!!!
Зачем с черто-то шутить? Вот исходники. Можно попробовать, хотя реально они выглядят несколько иначе (я их рихтовал уже в IN Browser"е). Но должно работать!..
TDBFHeader = record
abBuffer0: array[0..7] of byte;
wHeaderLength: word;
abBuffer1: array[0..17] of byte;
bMDX: byte;
abBuffer2: array[0..2] of byte;
end;
TDBFDesc = record
abBuffer0: array[0..30] of byte;
bMDX: byte;
end;
function DropIndexes(const DBFFileName: string): boolean;
var Header: TDBFHeader;
Desc: TDBFDesc;
iHandle, iDescCount, iDesc: integer;
sFileName: string;
begin
Result := true;
// Кооректируем заголовок
sFileName := DBFFileName + ".DBF";
iHandle := FileOpen(sFileName, fmOpenReadWrite or fmShareDenyNone);
if iHandle = -1 then
begin
Result := false;
exit;
end;
FileRead(iHandle, Header, 32);
Header.bMDX := 0;
FileSeek(iHandle, 0, fsSET);
FileWrite(iHandle, Header, 32);
iDescCount := (Header.wHeaderLength - 33) div 32;
for iDesc := 1 to iDescCount do
begin
FileRead(iHandle, Desc, 32);
Desc.bMDX := 0;
Application.ProcessMessages();
FileSeek(iHandle, iDesc * 32 , fsSET);
FileWrite(iHandle, Desc, 32);
end;
FileClose(iHandle);
// Удаляем индекс, если есть
sFileName := DBFFileName + ".MDX";
if FileExists(sFileName) then SysUtils.DeleteFile(sFileName);
end;
И еще.
Olivka! Если у Вас проблемы, пишитя прямо на мой e-mail: dmitry@lintec.net.ua
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.01.31;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.005 c