用C 訪問DBF檔案的方法

2021-04-02 07:38:59 字數 2534 閱讀 5017

//dbf.hpp

#ifndef dbf_h

#define dbf_h

#include

typedef int   bool;

#define maxfield 100

typedef struct column

column;

int createdbf(const char *fname, const column *item);

//dbf.cpp

#include

#include

#include

#include

#include

#include "dbf.hpp"

int createdbf(const char *fname, const column *item)

buf[0] = 0x0d;

fwrite(buf,1,1,out);

fseek(out,8,seek_set);

fwrite(&headlen,2,1,out);

fwrite(&reclen,2,1,out);

fclose(out);

return 1;

}cdbfile::cdbfile(const char *filename)

fread(&recnum,4,1,fp);

fread(&hsize,2,1,fp);

fieldnum=hsize/0x20-1;

hsize++;

fread(&recsize,2,1,fp);

hitem=new column[fieldnum];

tmpbuf=new char [11*fieldnum+2*fieldnum];

if(tmpbuf)

fp=null;

hitem=null;

}bool cdbfile::isopen(void)

int cdbfile::getfieldidx(const char *itemname)

int cdbfile::getfieldnum(void)

int cdbfile::getfieldlen(int fieldno)

int cdbfile::getfieldoff(int fieldno)

int cdbfile::getmaxfieldlen(void)

int cdbfile::getrecordsize(void)

if(!fp) return;

fseek(fp,0l,seek_end);

fwrite(recbuf,recsize,1,fp);

fseek(fp,4l,seek_set);

fread(&recnum,4,1,fp);

recnum++;

fseek(fp,4l,seek_set);

fwrite(&recnum,4,1,fp);

recnum++;

}bool cdbfile::setfielddata(long recno, const char *fname, const char *buff)

bool cdbfile::setfielddata(long recno, int fieldno, const char *buff)

fseek(fp,off,seek_set);

num=fieldlen[fieldno]-num;

memset(outbuf,0x20,num);

memcpy(outbuf,buff,strlen(buff));

fwrite(outbuf,num,1,fp);

return 1;

}void *cdbfile::getfielddata(long recno, const char *fname)

bool cdbfile::getfielddata(long recno, const char *fname, char *buff, int bufsize)

bool cdbfile::getfielddata(long recno, int fieldno, char *buff, int bufsize)

fseek(fp,off,seek_set);

num=fieldlen[fieldno]-num;

if(num>=bufsize)

fread(buff,num,1,fp);

if(toupper(hitem[fieldno].type)=='c')

buff[num] = 0;

return 1;

}long cdbfile::searchsortstr(int fieldno, const char *str, int igcase)

return -1;

}long cdbfile::searchstr(int fieldno, const char *str, long startno)

}delete buf;

return -1;

}long cdbfile::searchnextstr(int fieldno, const char *str)

DBF表用ADO訪問的一個問題

ors.cursorlocation aduseclient ors.open select from zcyzk.dbf oconn,adopenforwardonly,adlockreadonly 返回e fail錯誤 必須ors.open select bh,pm,kcs from zcyzk...

用C 讀取txt檔案的方法

1 使用filestream讀寫檔案 檔案頭 using system using system.collections.generic using system.text using system.io 讀檔案核心 byte bydata new byte 100 char chardata ne...

用C 讀取txt檔案的方法

1 使用filestream讀寫檔案 檔案頭 using system using system.collections.generic using system.text using system.io 讀檔案核心 byte bydata new byte 100 char chardata ne...

C 訪問應用程式配置檔案的方法

app.config中寫 注意c 中的應用程式配置檔名不能修改 複製 如下 在控制檯應用程式中訪問,如jnlhmapph下 首先新增system.con程式設計客棧figuration.dll引用 然後引入名稱空間 using system.confwww.cppcns.comiguration 複...

用SSH訪問內網主機的方法

如今的網際網路公司通常不會直接自己直接配主機搭建伺服器了,而是採用了類似阿里雲的這種雲主機,當應用變得越來越大了之後,就不可避免地增加主機,而出於成本考慮,不可能給每一臺主機都分配公網頻寬,所以實際的情況可能會變成這樣 內網ip為10.51.15.12和10.51.15.13的兩臺主機並沒有外網頻寬...