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

📄 aphearsayinifile.c

📁 本电子词典是名人928的学习机代码,主要是电子学习机AP,其他还没有传
💻 C
字号:
/****************************************************************************/
/*                                                                          */
/*              Copyright (C) 2005 SHENZHEN MEIJIN CO.LTD                   */
/*                                                                          */
/* FILE NAME:   ApHearSayIniFile.c                                          */
/* MODULE NAME: AP应用程序                                                  */
/* DESCRIPTION: HearSay Setting File                                        */
/*                                                                          */
/* FUNCTIONS:                                                               */
/*                                                                          */
/****************************************************************************/
/*    NAME         DATE               REMARKS                               */
/* ==========  ============   ==============================================*/
/*   DennyHan    2006-03-11         V1.00B                                  */
/****************************************************************************/
#include    "ap.h"
#include	"ApHearSay.h"
#include    "ApHearsaySet.h"



typedef struct tagINIFILEF{
    UINT8   szFileTag[4];
    UINT32  dwMode;
    UINT32  dwTimes;
}INITFILE_HDR;


typedef struct tagINIFILE{
    INITFILE_HDR    aFilehdr;
    UINT8   szFilePath[FILE_MAX_NAMELEN+1];
    UINT8   szFilePathEx[FILE_MAX_NAMELEN+1];       /// This is for TongBu
}INITFILE;

//--------------------------
// For seeting file
#define     APHEARSAYSET_SET_FIXPATH    (const char *)"A:/SYSTEM/HEARSAY.INI"
//--------------------------
#define     APHEARSAYSET_SET_ATTRIB     (ARDONLY|AHIDDEN)

#define     APHEARSAYSET_AUTO_DEF       0
#define     APHEARSAYSET_TIMES_DEF      3
#define		APHEARSAYSET_INI_FILENAME	(const char *)"HEARSAY.INI"
#define		APHEARSAYSET_INI_TAG		(const char *)"SET"
#define     APHEARSAYSET_SET_FAIL       (const char *)"系统设置保存失败!"


//============================
extern  RrParam     g_RrParam;
extern  HEARSAYSET	g_aHSSetting;



/****************************************************************************/
/* FUNCTION:   BOOL LoadSaveFile  (UINT8 *p)  								*/
/* DESCRIPTION:                                                             */
/* RETURN:     TRUE for success                                            */
/****************************************************************************/
/*    NAME         DATE               REMARKS                               */
/* ==========  ============   ==============================================*/
/*   DennyHan   2006-03-11          V1.00B                                  */
/****************************************************************************/
// This is for exporting function
// For "同步教材"
//---------------------------------
BOOL LoadSaveFile(UINT8 *p)
{
INT hIni;
BOOL    bRet;
UINT8   pFile[FILE_MAX_NAMELEN+1];  // Note Here

    strcpy((char*)pFile,(const char*)APHEARSAYSET_SET_FIXPATH);

    // 文件存在则打开,不存在则创建并打开
    bRet=FALSE;
	FileSetAttributes ((char*)pFile, ANORMAL);
	hIni = FileOpen(pFile, FILEMODE_READONLY);
	if (hIni>=0)
	{
       	FileSeek(hIni, (12+FILE_MAX_NAMELEN+1),   FILESEEK_BEGIN);
		p[0]=0;
		if (FileRead(hIni,(char*)p,FILE_MAX_NAMELEN)==FILE_MAX_NAMELEN)
		{
			bRet=TRUE;
		}

	    FileClose(hIni);            //关闭文件系统
        FileSetAttributes( (char*)pFile, APHEARSAYSET_SET_ATTRIB);
    }

	if (    (p[0] == 0)
		&&	(bRet==TRUE) )
    {
		bRet= FALSE;
	}

//	if (!bRet)
//	{
//		//MsgBoxRun(MSGBOX_NONE, (UINT8*)"装载参数失败!");
//	}

	return bRet;
}

/****************************************************************************/
/* FUNCTION:   BOOL EditLoadSetting(VOID)  								*/
/* DESCRIPTION:load ini param of setting                                   */
/* RETURN:     TRUE for success                                            */
/****************************************************************************/
/*    NAME         DATE               REMARKS                               */
/* ==========  ============   ==============================================*/
/*   DennyHan   2006-03-11          V1.00B                                  */
/****************************************************************************/
BOOL EditLoadSetting(VOID)
{
INITFILE	*pFile;
HFILE		hIni;
BOOL		bFileSucess;
BOOL		bRet=FALSE;
UINT8		tag[4];
INT			dwLen;

    memset(&g_aHSSetting,0,sizeof(g_aHSSetting));
	pFile=(INITFILE	*)g_RrParam.pTBuf;		// As buffer

    strcpy((char*)pFile->szFilePath,(const char*)APHEARSAYSET_SET_FIXPATH);
	bFileSucess=FALSE;

    //文件存在则打开,不存在则创建并打开
	FileSetAttributes ((char*)pFile->szFilePath, ANORMAL);
	hIni = FileOpen(pFile->szFilePath, FILEMODE_CREATEWRITE);

    // Ini file buffer
	memset(pFile,0,sizeof(INITFILE));
	strcpy( pFile->aFilehdr.szFileTag,APHEARSAYSET_INI_TAG);
	pFile->aFilehdr.dwMode = APHEARSAYSET_AUTO_DEF;
	pFile->aFilehdr.dwTimes = APHEARSAYSET_TIMES_DEF;
    strcpy( pFile->szFilePath,g_RrParam.pFile);
    pFile->szFilePathEx[0] = 0;
    if (g_RrParam.bSyncMtlEntry)
    {
        strcpy( pFile->szFilePathEx,g_RrParam.pFile);
    }

	if (hIni<0)
	{
       	FileSeek(hIni, 0, FILESEEK_BEGIN);
		FileRead(hIni, (char*)tag, 4);
		if (   ( FileLength(hIni) < sizeof(INITFILE) )
			|| (strcmp(tag, APHEARSAYSET_INI_TAG ) !=0) )
		{
			/*//当文件长度小于应有长度,认为文件被破坏或文件还没有被创建*/
			FileSeek(hIni, 0, FILESEEK_BEGIN);
			dwLen=FileWrite(hIni, (char*)pFile, sizeof(INITFILE));
			if ( dwLen ==sizeof(INITFILE) )
			{
				bFileSucess=TRUE;
			}
		}
		else
		{
		    bFileSucess=TRUE;
		}
	}
	else
	{
		bFileSucess=TRUE;
	}

	if (bFileSucess)
	{
		FileSeek(hIni, 0, FILESEEK_BEGIN);
		FileRead(hIni, (char*)pFile, sizeof(INITFILE) );

        if (g_RrParam.bSyncMtlEntry)
        {
            strcpy( pFile->szFilePathEx,g_RrParam.pFile);
        }

        FileSeek(hIni, 0, FILESEEK_BEGIN);
		dwLen=FileWrite(hIni, (char*)pFile, sizeof(INITFILE));
		FileClose(hIni);                                 //关闭文件系统
        if (dwLen!=sizeof(INITFILE))
        {
            bFileSucess=FALSE;
        }
	}

	g_aHSSetting.hAuto =pFile->aFilehdr.dwMode;
	g_aHSSetting.hTimes = pFile->aFilehdr.dwTimes;

    /*文件创建失败,参数设为默认*/
    strcpy((char*)pFile->szFilePath,(const char*)APHEARSAYSET_SET_FIXPATH);
	if (!bFileSucess)
	{
	    if (hIni>=0)
	    {
            FileDelete((char*)pFile->szFilePath);
        }
	}
	else
	{
        FileSetAttributes((char*)pFile->szFilePath, APHEARSAYSET_SET_ATTRIB);
	}

    LoadSaveParam();
	return bRet;
}

/****************************************************************************/
/* FUNCTION:   BOOL EditSaveSetting(VOID)  								*/
/* DESCRIPTION:load ini param of setting                                   */
/* RETURN:     TRUE for success                                            */
/****************************************************************************/
/*    NAME         DATE               REMARKS                               */
/* ==========  ============   ==============================================*/
/*   DennyHan   2006-03-11          V1.00B                                  */
/****************************************************************************/
BOOL EditSaveSetting(VOID)
{
HFILE	    hIni;
INITFILE	*pFile;
BOOL        bFileSucess=FALSE;
INT			dwLen;

	pFile=(INITFILE	*)g_RrParam.pTBuf;		// As buffer

    strcpy((char*)pFile->szFilePath,(const char*)APHEARSAYSET_SET_FIXPATH);

	FileSetAttributes ((char*)pFile->szFilePath, ANORMAL);

	hIni = FileOpen((char*)pFile->szFilePath, FILEMODE_READWRITE);
	if (hIni>=0)
	{
    	memset(pFile,0,sizeof(INITFILE));
		strcpy( pFile->aFilehdr.szFileTag,APHEARSAYSET_INI_TAG);
	    pFile->aFilehdr.dwMode =g_aHSSetting.hAuto ;
	    pFile->aFilehdr.dwTimes =g_aHSSetting.hTimes;
        strcpy((char*)pFile->szFilePath,(char*)g_RrParam.pFile);

        if (g_RrParam.bSyncMtlEntry)
        {
            strcpy( pFile->szFilePathEx,g_RrParam.pFile);
        }
        else
        {
           	FileSeek(hIni, (12+FILE_MAX_NAMELEN),   FILESEEK_BEGIN);
	    	FileRead(hIni,(char*)pFile->szFilePathEx,FILE_MAX_NAMELEN);
        }

		FileSeek(hIni, 0, FILESEEK_BEGIN);
		dwLen=FileWrite(hIni, (char*)pFile, sizeof(INITFILE));
		FileClose(hIni);

        strcpy((char*)pFile->szFilePath,(const char*)APHEARSAYSET_SET_FIXPATH);
		if ( dwLen ==sizeof(INITFILE) )
		{
			bFileSucess=TRUE;
            FileSetAttributes( (char*)pFile->szFilePath, APHEARSAYSET_SET_ATTRIB);
		}
		else
		{
            FileDelete((char*)pFile->szFilePath);
        }
	}


    LoadSaveParam();
	if (   (hIni < 0)
	    || (!bFileSucess) )
	{
 		MsgBoxRun(MSGBOX_NONE, (UINT8*)APHEARSAYSET_SET_FAIL);
 		return FALSE;
    }

	return TRUE;
}

/****************************************************************************/
/* FUNCTION:   BOOL PathSaveSetting(VOID)  								*/
/* DESCRIPTION:load ini param of setting                                   */
/* RETURN:     TRUE for success                                            */
/****************************************************************************/
/*    NAME         DATE               REMARKS                               */
/* ==========  ============   ==============================================*/
/*   DennyHan   2006-03-11          V1.00B                                  */
/****************************************************************************/
BOOL PathSaveSetting(VOID)
{
    return EditSaveSetting();
}



/****************************************************************************/
/* FUNCTION:   BOOL LoadSaveParam(VOID)  								    */
/* DESCRIPTION:load ini param of setting                                   */
/* RETURN:     TRUE for success                                            */
/****************************************************************************/
/*    NAME         DATE               REMARKS                               */
/* ==========  ============   ==============================================*/
/*   DennyHan   2006-03-11          V1.00B                                  */
/****************************************************************************/
BOOL LoadSaveParam(VOID)
{
	g_RrParam.wRptTotalCycles = g_aHSSetting.hTimes;				// 复读次数

	// Clr current repeat mode
	g_RrParam.wRptMode &= (~RR_MODE_MANUAL);
	g_RrParam.wRptMode &= (~RR_MODE_AUTOMATIC);

	if( g_aHSSetting.hAuto == 1)
	{
		g_RrParam.wRptMode |= RR_MODE_MANUAL;						//手动模式
	}
	else
	{
		g_RrParam.wRptMode |= RR_MODE_AUTOMATIC;					//自动模式
	}

	if ((g_RrParam.wRptMode & RR_MODE_NOMST))
	{   // if no MST file
		g_RrParam.wRptMode &= (~RR_MODE_AUTOMATIC);
	    g_RrParam.wRptMode |= RR_MODE_MANUAL;   					//手动模式
	}
    else
    {
		g_RrParam.wRptMode &= (~RR_MODE_MANUAL);
	    g_RrParam.wRptMode |= RR_MODE_AUTOMATIC;   					//手动模式
    }

	if ( g_RrParam.wRptMode & RR_MODE_NOTEXT)
	{// if no text file
		g_RrParam.wRptMode &= (~RR_MODE_AUTOMATIC);
	    g_RrParam.wRptMode |= RR_MODE_MANUAL;   					//手动模式
    }

	return TRUE;
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -