如何使用打开文本的方法去打开VFP的DBF文件,(不使用ADO\BDE\ODBC和其他外部控件)救急呀,别再给我看DBF的结构说明了.....

解决方案 »

  1.   

    Type dbfHead
         ver As Byte
         year As Byte
         month As Byte
         day As Byte
         recordno As Long
         HeaderLen As Integer
         RecordLen As Integer
         Zero As String * 20
    End TypeType dbfRecord
         leader As String * 1
         field1 As String * 2
         field2 As String * 2
         ......
    End TypeDim recHead As dbfHead
    Dim recData as dbfRecord
    dim hFile as integerhFile = FreeFile
    Open FileName For Binary As #hFile
    Get #hFile, , recData
    Seek #hFile, (recData.HeaderLen + 1)
    Get #hFile, , recData   '获取第一条记录
    Get #hFile, , recData   '获取第二条记录
      

  2.   

    sorry,上面贴有误,更正:Type dbfHead
         ver As Byte
         year As Byte
         month As Byte
         day As Byte
         recordno As Long
         HeaderLen As Integer
         RecordLen As Integer
         Zero As String * 20
    End TypeType dbfRecord
         leader As String * 1
         field1 As String * 2
         field2 As String * 2
         ......
    End TypeDim recHead As dbfHead
    Dim recData as dbfRecord
    dim hFile as integerhFile = FreeFile
    Open FileName For Binary As #hFile
    Get #hFile, , recHead
    Seek #hFile, (recHead.HeaderLen + 1)
    Get #hFile, , recData   '获取第一条记录
    Get #hFile, , recData   '获取第二条记录
      

  3.   

    再次SORRY,没留意到这是Delphi版,请将以上两贴删除。type
      FileHead = record
        ver: Byte;
        year: Byte;
        month: Byte;
        day: Byte;
        recordno: LongInt;
        HeaderLen: SmallInt;
        RecordLen: SmallInt;
        Zero: array [1..20] of char;
      end;  FileData = record
        leader: array [1..1] of char;     //保留
        field1: array [1..5] of char;
        field2: array [1..5] of char;
        ......
      end;var
      hFile: Integer;
      recHead: FileHead;
      recData: FileData;begin
      hFile := FileOpen('C:\aaa.dbf', fmOpenReadWrite);
      FileRead(hFile, recHead, 32);
      FileSeek(hFile,recHead.HeaderLen ,0);
      FileRead(hFile, recData, SizeOf(recData));  //获取第一条记录
      FileRead(hFile, recData, SizeOf(recData));  //获取第二条记录