📄 foxpro.h
字号:
#ifndef _FOXPRO_H_
#define _FOXPRO_H_
//数据库头
struct FOXPRO_HEAD
{
BYTE byFlags;
BYTE byYear;
BYTE byMonth;
BYTE byDay;
DWORD dwRecordCount;
WORD wRecordAddress;
WORD wRecordLength;
DWORD dwReserve1;
DWORD dwReserve2;
DWORD dwReserve3;
DWORD dwReserve4;
DWORD dwReserve5;
};
//数据库“域”属性
struct FOXPRO_FIELDS
{
BYTE strName[10];
BYTE byFill;
BYTE byStyle;
DWORD dwDataAddress;
BYTE byLength;
BYTE byDotCount;
WORD wReserve1;
BYTE byFlags;
BYTE wsReserve[11];
};
//数据库“类”定义
class CFoxpro
{
private:
BOOL m_bNew;
long m_lRecordPoint;
char m_strFile[256];
FOXPRO_HEAD m_FoxproHead;
FOXPRO_FIELDS m_FoxproFields;
FILE* m_pFile;
BYTE* m_pRecordBuf;
FOXPRO_FIELDS* m_pFoxproFields;
public:
//建立新的数据库
BOOL CreateFoxpro(const char*pStr);
//打开已存在的数据库
BOOL OpenFoxpro(const char*pStr);
//关闭数据库
BOOL CloseFoxpro();
//增加一域
BOOL AddFields(const char* strName,BYTE byStyle,int nLength,int nDot);
//获得指定列的“域”属性
FOXPRO_FIELDS* GetFoxproFields(int nIndex);
public:
//获得列的数量
int GetFieldsCount() {return(m_FoxproHead.wRecordAddress-sizeof(FOXPRO_HEAD))/sizeof(FOXPRO_FIELDS);}
//获得纪录总数
long GetRecordCount() {return(m_FoxproHead.dwRecordCount);}
//获得纪录地址
long GetRecordAddress() {return((DWORD)m_FoxproHead.wRecordAddress);}
//获得数据库的最后修改日期-“有”
int GetMonth() {return((int)m_FoxproHead.byMonth);}
//获得数据库的最后修改日期-“日”
int GetDay() {return((int)m_FoxproHead.byDay);}
//获得数据库的最后修改日期-“年”
int GetYear() {return((int)1900+(DWORD)m_FoxproHead.byYear);}
//获得纪录的长度
int GetRecordLength(){return((int)(DWORD)m_FoxproHead.wRecordLength);}
//显示数据库调试信息
void Debug();
public:
//修剪指定字符串的前导空格
static char* TrimLeft(char *pStr);
//修剪指定字符串的后导空格
static char* TrimRight(char *pStr);
public:
//设置串类型“域”的字符串
BOOL SetFieldsString(int nIndex, const char* pStr);
//设置数字类型“域”的数字值
BOOL SetFieldsNumber(int nIndex,float fValue);
//设置日期类型“域”的日期值
BOOL SetFieldsDate(int nIndex,int nYear,int nMonth,int nDay);
//设置逻辑类型“域”的逻辑值
BOOL SetFieldsLogic(int nIndex,BOOL bLogic);
//设置备注类型“域”的备注值
BOOL SetFieldsMemo(int nIndex, const char* pStr);
//获得串类型“域”的字符串
BOOL GetFieldsString(int nIndex,char* pStr);
//获得数字类型“域”的数字值
float GetFieldsNumber(int nIndex);
//获得日期类型“域”的日期值
BOOL GetFieldsDate(int nIndex,int* pnYear,int* pnMonth,int* pnDay);
//获得逻辑类型“域”的逻辑值
BOOL GetFieldsLogic(int nIndex);
//获得备注类型“域”的备注值
BOOL GetFieldsMemo(int nIndex,char* pStr);
//定位纪录
BOOL Seek(long nIndex,int nMode);
//判断数据库是否已经打开
BOOL IsOpen();
//刷新数据库到磁盘
BOOL Flush();
//增加一新纪录
BOOL AddNew();
//准备修改当前纪录
BOOL Edit();
//使当前的更改有效
BOOL Update();
//在当前纪录中插入一条纪录
BOOL Insert();
//删除当前纪录(带上删除标记)
BOOL Delete();
//删除当前纪录
BOOL DeleteEx();
//将带有删除标准的纪录删除
BOOL Zap();
public:
void CoFoxpro();//构造函数调用
//构造函数
CFoxpro();
//构造函数(打开指定的数据库)
CFoxpro(char* strFile);
//析构函数
~CFoxpro();
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -