Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.01.31;
Скачать: CL | DM;

Вниз

потерялся индекс в фоксе, как быть?   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.46 MB
Время: 0.011 c
7-100078
Win
2001-10-20 12:38
2002.01.31
реестр


6-100030
FD
2001-11-08 13:16
2002.01.31
Объясните новичку


4-100098
Evgeniy_S
2001-11-28 16:13
2002.01.31
THREADS !!!


3-99832
Доктор
2001-12-20 22:17
2002.01.31
Фильтрация!!! срочно!!


14-100041
SP
2001-12-06 15:31
2002.01.31
Может видели ссылку на C++ Builder?