社区
C语言
帖子详情
哪里有操作DBF文件的C源码下载(十万火急) ?
happy
2000-04-30 05:25:00
...全文
297
4
打赏
收藏
哪里有操作DBF文件的C源码下载(十万火急) ?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
happy
2000-05-09
打赏
举报
回复
谢谢你们
我也放弃了
fuzhenxing
2000-05-07
打赏
举报
回复
#include "dbf.h"
#include <dos.h>
#define OK 0
#define CANCEL -1
DBFop::DBFop(char *DBFname)
{
initDBF(DBFname,SHARE and NEEDWRITE);
}
DBFop::DBFop(char *DBFname,int op)
{
initDBF(DBFname,op);
}
void DBFop::initDBF(char *DBFname,int op)
{
int tmpi1,tmpi2;
int _access,_shflag,_mode;
// char *p;
DBFstru=NULL;
strcpy(DBFfn,DBFname);
tmpi1=op&0x00FF; // EXCLUSIVE
tmpi2=op&0xFF00; // NEEDWRITE
_access=O_BINARY;
_access and =tmpi2?O_RDWR:O_RDONLY;
_shflag=tmpi1?SH_DENYRW:SH_DENYNONE;
_mode=S_IREAD;if(tmpi2) _mode and =S_IWRITE;
DBFfp=sopen(DBFfn,_access,_shflag,_mode);
if(DBFfp!=-1)
{
read(DBFfp,&DBFhead,32);
iFieldNum=DBFhead.Addr/32-1;
dataStart=DBFhead.Addr;
DBFstru=(DBFstruType *)farmalloc(iFieldNum*32);
read(DBFfp,DBFstru,iFieldNum*32);
/*
tmpi=strlen(DBFname);
strncpy(LDXfn,DBFname,tmpi-3);
LDXfn[tmpi-3]=0;
strcat(LDXfn,"LDX");
*/
}
else
{
DBFhead.DBFcode=0;
DBFhead.Len=16;
}
if(DBFhead.DBFcode==-11)
{
tmpi1=strlen(DBFname);
strncpy(FPTfn,DBFname,tmpi1-3);
FPTfn[tmpi1-3]=0;
strcat(FPTfn,"FPT");
FPTfp=sopen(FPTfn,_access,_shflag,_mode);
cHasFPT=1;
}
else cHasFPT=0;
dataBuf[0]=dataBuf[1]=dataBuf[2]=dataBuf[3]=NULL;
recPerBuf=64000L/DBFhead.Len;
isOpen=1;
cHasMEM=0;
cHasXMS=0;
cReadBuf=0;
cWriteBuf=0;
}
DBFop::~DBFop()
{
if(cReadBuf) delete readRecordBuf;
if(cWriteBuf) delete writeRecordBuf;
if(cHasMEM) freeDBFMEM();
if(cHasXMS) freeDBFXMS();
if(isOpen&&DBFfp!=-1) close(DBFfp);
if(isOpen&&FPTfp!=-1&&cHasFPT) close(FPTfp);
if(DBFstru!=NULL) farfree(DBFstru);
}
int DBFop::isOk(void)
{
return DBFfp!=-1?1:0;
}
int DBFop::isDBFok(void)
{
return DBFfp!=-1?OK:CANCEL;
}
long DBFop::getDBFnum(void)
{
return DBFhead.Num;
}
int DBFop::reLoadDBFhead(void)
{
if(DBFfp==-1) return 1;
lseek(DBFfp,0,0);
read(DBFfp,&DBFhead,32);
return 0;
}
int DBFop::getDBFrecord(long lRecordNo,char *cRetChar)
{
return getDBFrecord(lRecordNo,cRetChar,0);
}
int DBFop::getDBFrecord(long lRecordNo,char *cRetChar,int len)
{
if(lRecordNo>=DBFhead.Num)
{
*cRetChar=0;return 2;
}
lseek(DBFfp,lRecordNo*DBFhead.Len+DBFhead.Addr,0);
read(DBFfp,cRetChar,DBFhead.Len-len);
cRetChar[DBFhead.Len-len]=0;
return 0;
}
sunsol
2000-05-02
打赏
举报
回复
问一下文件结尾的1A标志怎么在我用foxplus手动append单条记录时
没有出现?
syz
2000-04-30
打赏
举报
回复
不知你想干什麽?我曾经也有你一样的问题,后来放弃了,因为还是用FOX 比较方便。
访问DBF 就象用DBC驱动比较来的快,不知你是不是想寻求刺激?那就去“文件格式”里
看看吧!要是我赶程序的话,我是不会这样做的。":-)
DBF
文件
的
操作
经典详解(C语言版)
DBF
文件
操作
C语言
DBF
文件
操作
C语言
DBF
文件
操作
C语言
DBF
文件
操作
C语言
DBF
文件
操作
C语言
DBF
文件
操作
C语言
DBF
文件
操作
C语言
java
操作
dbf
文件
包括java读写
dbf
文件
源码
,可改写重用,可用于生成
dbf
文件
或解析
dbf
文件
获取数据。
dbf
文件
的读取
源码
Frank Warmerdam的
dbf
操作
库是大家用的最多的,但是我在读取
dbf
3.0的时候发现2006年的
dbf
库有几个bug,对于foxpro类型的
文件
,读取的字段数是有错误的。这是我修正后的
源码
,可以正确读取3.0的
dbf
文件
了
通过java
操作
dbf
文件
的java
dbf
通过java
操作
dbf
文件
的java
dbf
,含
源码
,api
C++
操作
Dbf
文件
功能:
操作
DBF
文件
的C++代码,可以创建
DBF
文件
、读取
DBF
文件
、写入
DBF
文件
、拷贝
DBF
文件
的结构 环境:需要C++11和BOOST库,需要设置环境变量BOOST_HOME指向BOOST的根目录 例子:见main.cpp
C语言
69,337
社区成员
243,078
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章