📄 filesys20.c
字号:
入口参数:FileID:文件标识符,*Ptr:指向要增加的记录的指针
返回 值:
功能描述:增加一条记录
算法描述:
建立时间:2003/12/24
作 者:
当前版本:V1.1
-----------------------------------
修改时间:2004/11/26
V1.1版修改说明:(同HH_InitBinary)
****************************************************************************************
*/
unsigned char HH_NewRecord(unsigned char FileID,unsigned char *Ptr)
{
return (Oper_Record(FileID, 0, Ptr, WRITE_NEXT));
}
/*
****************************************************************************************
函数名称:HH_WriteRecord
入口参数:FileID:文件标识符,*Ptr:指向要写入的记录数据的指针
返回 值:
功能描述:写记录
算法描述:只能改写之前存在的记录
建立时间:2003/12/24
作 者:
当前版本:V1.1
-----------------------------------
修改时间:2004/11/26
V1.1版修改说明:(同HH_InitBinary)
****************************************************************************************
*/
unsigned char HH_WriteRecord(unsigned char FileID,unsigned char *Ptr)
{
return (Oper_Record(FileID, 0, Ptr, WRITE_CUR));
}
/*
****************************************************************************************
函数名称:HH_ReadRecord
入口参数:FileID:文件标识符,*Ptr:指向要读取的记录数据的指针
返回 值:
功能描述:读取记录
算法描述:
建立时间:2003/12/24
作 者:
当前版本:V1.1
-----------------------------------
修改时间:2004/11/26
V1.1版修改说明:(同HH_InitBinary)
****************************************************************************************
*/
unsigned char HH_ReadRecord(unsigned char FileID,unsigned char *Ptr)
{
return (Oper_Record(FileID, 0, Ptr, READ_CUR));
}
/*
****************************************************************************************
函数名称:HH_DelRecord
入口参数:FileID:文件标识符
返回 值:
功能描述:删除记录
算法描述:只对先进先出文件有效(目前只有发票分发记录文件是该类型)
建立时间:2003/12/24
作 者:
当前版本:V1.1
-----------------------------------
修改时间:2004/11/26
V1.1版修改说明:(同HH_InitBinary)
****************************************************************************************
*/
unsigned char HH_DelRecord(unsigned char FileID)
{
return (Oper_Record(FileID, 0, NULL, DELETE_RECORD));
}
/*
****************************************************************************************
函数名称:HH_SetIndex
入口参数:FileID:文件标识符,Index:记录文件序号
返回 值:
功能描述:设置要操作记录文件序号
算法描述:只能在已有的范围内设置
建立时间:2003/12/24
作 者:
当前版本:V1.1
-----------------------------------
修改时间:2004/11/26
V1.1版修改说明:(同HH_InitBinary)
****************************************************************************************
*/
unsigned char HH_SetIndex(unsigned char FileID,unsigned int Index)
{
return (Oper_Record(FileID, Index, NULL, SET_INDEX));
}
/*
****************************************************************************************
函数名称:HH_First
入口参数:FileID:文件标识符
返回 值:
功能描述:设置记录文件序号为首条
算法描述:
建立时间:2003/12/24
作 者:
当前版本:V1.1
-----------------------------------
修改时间:2004/11/26
V1.1版修改说明:(同HH_InitBinary)
****************************************************************************************
*/
unsigned char HH_First(unsigned char FileID)
{
return (Oper_Record(FileID, 0, NULL, SET_FIRST));
}
/*
****************************************************************************************
函数名称:HH_Last
入口参数:FileID:文件标识符
返回 值:
功能描述:设置记录文件序号为最后一条
算法描述:
建立时间:2003/12/24
作 者:
当前版本:V1.1
-----------------------------------
修改时间:2004/11/26
V1.1版修改说明:(同HH_InitBinary)
****************************************************************************************
*/
unsigned char HH_Last(unsigned char FileID)
{
return (Oper_Record(FileID, 0, NULL, SET_LAST));
}
/*
****************************************************************************************
函数名称:HH_Next
入口参数:FileID
返回 值:
功能描述:设置记录文件序号为下一条
算法描述:
建立时间:2003/12/24
作 者:
当前版本:V1.1
-----------------------------------
修改时间:2004/11/26
V1.1版修改说明:(同HH_InitBinary)
****************************************************************************************
*/
unsigned char HH_Next(unsigned char FileID)
{
return (Oper_Record(FileID, 0, NULL, SET_NEXT));
}
/*
****************************************************************************************
函数名称:HH_SearchRecord
入口参数:
返回 值:
功能描述:
算法描述:
建立时间:2003/12/24
作 者:
当前版本:V1.0
****************************************************************************************
*/
//unsigned char HH_SearchRecord(unsigned char FileID,_SearchData *sdP)
//{
//
//}
/*
****************************************************************************************
函数名称:Read_Binary
入口参数:*bfP:二进制文件指针,*Ptr:二进制文件数据指针,CheckType:校验类别
返回 值:
功能描述:读取二进制文件数据(内部使用)
算法描述:
建立时间:2003/12/24
作 者:
当前版本:V2.0
-----------------------------------
修改时间:2004/11/26
V2.0版修改说明:
增加InsideRead()/InsideWrite()作为中间读写层,使读写结构融合为一种,使程序容易维护,
在InsideWrite()中对写入的结果读出后比较,确保写入数据正确
****************************************************************************************
*/
unsigned char Read_Binary(_BinaryFile *bfP,unsigned char *Ptr,unsigned char CheckType)
{
unsigned char ErrType;
_BinaryFile nowFile;
#if (DEBUG_BINFILE==1)
PrintStr("\n Rd_Bin Bigan!\n ");
#endif
nowFile.BakFlag = bfP->BakFlag;
nowFile.MemType = bfP->MemType;
nowFile.FirstAddr = bfP->FirstAddr;
nowFile.MaxLen = bfP->MaxLen;
ErrType = InsideRead(&nowFile,Ptr,CheckType);
#if (DEBUG_BINFILE==1)
PrintStr("\n Rd_Bin End!\n ");
#endif
return (ErrType);
}
/*
****************************************************************************************
函数名称:Write_Binary
入口参数:*bfP:二进制文件指针,*Ptr:二进制文件数据指针
返回 值:
功能描述:写二进制文件(内部使用)
算法描述:
建立时间:2003/12/24
作 者:
当前版本:V2.0
-----------------------------------
修改时间:2004/11/26
V2.0版修改说明:
增加InsideRead()/InsideWrite()作为中间读写层,使读写结构融合为一种,使程序容易维护,
在InsideWrite()中对写入的结果读出后比较,确保写入数据正确
****************************************************************************************
*/
unsigned char Write_Binary(_BinaryFile *bfP,unsigned char *Ptr,unsigned char CheckType)
{
unsigned char ErrType;
_BinaryFile nowFile;
#if (DEBUG_BINFILE==1)
PrintStr("\n Wr_Bin Bigan!\n ");
#endif
nowFile.BakFlag = bfP->BakFlag;
nowFile.MemType = bfP->MemType;
nowFile.FirstAddr = bfP->FirstAddr;
nowFile.MaxLen = bfP->MaxLen;
ErrType = InsideWrite(&nowFile,Ptr,CheckType);
#if (DEBUG_BINFILE==1)
PrintStr("\n Wr_Bin End!\n ");
#endif
return (ErrType);
}
/*
****************************************************************************************
函数名称:Read_FileHead
入口参数:*rfP:记录文件指针,*tmpHeadData:指向文件头数据的指针
返回 值:
功能描述:读取文件头
算法描述:
建立时间:2003/12/24
作 者:
当前版本:V2.0
-----------------------------------
修改时间:2004/11/26
V2.0版修改说明:
增加InsideRead()/InsideWrite()作为中间读写层,使读写结构融合为一种,使程序容易维护,
在InsideWrite()中对写入的结果读出后比较,确保写入数据正确
****************************************************************************************
*/
unsigned char Read_FileHead(_RecordFile *rfP,unsigned char *tmpHeadData)
{
unsigned char ErrType;
_BinaryFile nowFile;
#if (DEBUG_FILEHEAD==1)
PrintStr("\n Rd_FH Bigan!\n ");
#endif
nowFile.BakFlag = 1;
nowFile.MemType = rfP->HeadMemType;
nowFile.FirstAddr = rfP->HeadFirstAddr;
nowFile.MaxLen = FILE_HEAD_MAX_LEN;
ErrType = InsideRead(&nowFile,tmpHeadData,XOR_CHECK);
#if (DEBUG_FILEHEAD==1)
PrintStr("\n Rd_FH End!\n ");
#endif
return (ErrType);
}
/*
****************************************************************************************
函数名称:Write_FileHead
入口参数:*rfP:记录文件指针,*tmpHeadData:指向记录文件数据的指针
返回 值:
功能描述:写记录文件头(内部使用)
算法描述:
建立时间:2003/12/24
作 者:
当前版本:V2.0
-----------------------------------
修改时间:2004/11/26
V2.0版修改说明:
增加InsideRead()/InsideWrite()作为中间读写层,使读写结构融合为一种,使程序容易维护,
在InsideWrite()中对写入的结果读出后比较,确保写入数据正确
****************************************************************************************
*/
unsigned char Write_FileHead(_RecordFile *rfP,unsigned char *tmpHeadData)
{
unsigned char ErrType;
_BinaryFile nowFile;
#if (DEBUG_FILEHEAD==1)
PrintStr("\n Wr_FH Begin!\n ");
#endif
nowFile.BakFlag = 1;
nowFile.MemType = rfP->HeadMemType;
nowFile.FirstAddr = rfP->HeadFirstAddr;
nowFile.MaxLen = FILE_HEAD_MAX_LEN;
ErrType = InsideWrite(&nowFile,tmpHeadData,XOR_CHECK);
#if (DEBUG_FILEHEAD==1)
PrintStr("\n Wr_FH End!\n ");
#endif
return (ErrType);
}
/*
****************************************************************************************
函数名称:Oper_FileHead
入口参数:*rfP:记录文件指针,*fhP:文件头指针,*erP:错误记录指针,
Index:记录文件序号,OperType:操作类型
返回 值:
功能描述:操作文件头(内部使用)
算法描述:
建立时间:2003/12/24
作 者:
当前版本:V1.0
****************************************************************************************
*/
unsigned char Oper_FileHead(_RecordFile *rfP,_FileHead *fhP,_ErrRecord *erP,unsigned int Index,unsigned char OperType)
{
#if (DEBUG_FILEHEAD==1)
PrintStr("\n Oper_FileHead Bigan!\n ");
#endif
switch(OperType)
{
case SET_INDEX://指针指向任意一条记录
{
if ((fhP->ValidRecordSum==0)||(Index>rfP->MaxRecordSum))//无记录
{
return(ERR_INDEX);//记录序号不在范围内
}
if ((rfP->ErrRecordMemType!=0) && (erP->Sum!=0))//有错误记录区时
{
if (Is_ErrRecordNo(Index, erP) != HH_OK)//序号在错误记录区
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -