⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 filesys20.c

📁 一个线性定地址的文件系统
💻 C
📖 第 1 页 / 共 5 页
字号:
入口参数: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 + -