注册 登录
编程论坛 VFP论坛

我在網路上發現那段程式碼,正是我需要解開的問題,但是我不知道如何運用那段程式碼,求各位大大解答,謝謝您。

高大成 发布于 2023-10-20 19:14, 768 次点击
dbf檔在第28byte記錄著是否有index,將其設為0就不會去找index了   
function disableIndex(fname:string):integer;
//attempts disable .mdx by clear .dbf's byte 28
// return 1 if it has intex file
var
    F:File of byte;
    old,value :byte;
begin
  value := 0;
  try
    assignFile(F, fname);
  except
    showmessage('can not open file:'  fname);
  end;
  Reset(F);
  Seek(F, 28);
  read(F, old);
  if old = 1 then begin
    Seek(F, 28);
    Write(F, value);
    result := 1;
    end
  else
    result := 0;
  CloseFile(F);
end;
10 回复
#2
sdta2023-10-20 19:54
这是什么语言代码
#3
sam_jiang2023-10-20 20:17
台湾的兄弟,这里是foxpro
#4
吹水佬2023-10-20 20:28
回复 楼主 高大成
delphi写的程式
vfp可用低级文件操作代替
#5
吹水佬2023-10-20 20:39
以下是引用高大成在2023-10-20 19:14:37的发言:
......
  Seek(F, 28);
  read(F, old);
  if old = 1 then begin
    Seek(F, 28);
    Write(F, value);
......

取偏移28(old)== 1 来判断不太准确,最好用BITAND(old,1)==1来判断,并且不要直接修改为0(因这个数还有其他的意思)。

[此贴子已经被作者于2023-10-20 20:41编辑过]

#6
sych2023-10-21 09:56
*第28位,表的标记
*0x01 具有 .cdx结构的文件
*0x02 文件包含备注
*0x04 文件是数据库(.dbc)
CLOSE all
a=FOPEN("syc.dbf",12)
=FSEEK(a,28)
b=ASC(FREAD(a,1))
IF BITTEST(b,0)
    ?"这个文件有结构索引"
*    =FSEEK(a,28)
*    =FWRITE(a,CHR(BITCLEAR(b,0)))  &&清除标志
ELSE
    ?"这个文件无结构索引"
ENDIF
=FCLOSE(a)
#7
高大成2023-11-03 05:44
這是我的dbf檔案打開亂碼,因為之前有人跟我說過,byte第28位元什麼什麼的,但因為我是沒基礎的人,完全聽不懂要如何操作那段程式碼,求各位大大,指導我要如何去運作那段程式碼,謝謝。

                        F                   14                               ???��??���a���R  ��  2012�� �� 21 �E                                                 115/12/07                     2.5                               20171014��  �M2017102306/09(�E�W),06/08(�E�R),05/17(�E�W,21�W),05/30(��2�R),05/28(��2�W),02/23(���W),02/22(���R,��2�R),02/21(��2�W),10/23(�׼W),10/14(���W),                                                                                                        
#8
吹水佬2023-11-03 21:00
回复 7楼 高大成
dbf是怎样打开的?
#9
高大成2023-11-07 08:58
回复 8楼 吹水佬
我是用記事本打開的
#10
sych2023-11-07 09:04
6楼的可以解决你的问题,只是你没基础,不知其然
#11
高大成2023-11-07 09:27
回复 4楼 吹水佬
謝謝版主
1