原子哥,我回去看了看你的综合测试程序,Read_Book程序中你也是FileInfoStruct *FileInfo;这样定义的!!!!再者File_Browse程序中你也是这样定义的!!!你的却也没问题,也不会内存溢出.......也都用了Get_File_Info(......)函数。
void Read_Book(FileInfoStruct *FileName);
//文本浏览器(.txt/.c/.h/.lrc)
//支持FAT32/16文件系统的浏览.
void Ebook_Play(void)
{
FileInfoStruct *FileInfo;
u16 index=0; //当前选择的文件编号
//从根目录开始浏览
if(FAT32_Enable)Cur_Dir_Cluster=FirstDirClust;//根目录簇号
else Cur_Dir_Cluster=0;
Fat_Dir_Cluster=Cur_Dir_Cluster;//父目录就是当前目录
while(1)
{
POINT_COLOR=RED;
Load_Gui_Bro("选择");//显示GUI界面
Show_Str(88,2,"电子图书",16,0x01);//叠加模式,非自动换行
index=File_Browse(T_LRC|T_TXT|T_C|T_H);//浏览文件夹
if(!index)return;//结束浏览,退出此功能!!!!!
Pen_Point.Key_Sta=Key_Up; //释放显示期间的触发
FileInfo=&F_Info[0];//开辟暂存空间.
Get_File_Info(Cur_Dir_Cluster,FileInfo,T_LRC|T_TXT|T_C|T_H,&index);//得到这张图片的信息
Read_Book(FileInfo);//读取TXT文件
}
}
u16 File_Browse(u32 file_type)
{
FileInfoStruct *FileInfo;
u16 folder_cnt;//文件夹的个数
u16 des_cnt; //目标文件的个数
u8 fcnt; //显示的文件数目
u16 temp;
u16 total_file;//总文件数目
u16 pos_cnt;//当前文件号 1~folder_cnt+des_cnt
u8 key;
Reset:
POINT_COLOR=BLUE; //蓝色笔头使用
folder_cnt=0;des_cnt=0;fcnt=0;key=0;pos_cnt=0;
Get_File_Info(Cur_Dir_Cluster,FileInfo,T_FILE,&folder_cnt);//得到当前目录下文件夹的个数
Get_File_Info(Cur_Dir_Cluster,FileInfo,file_type,&des_cnt);//得到当前目录下目标文件的个数
total_file=des_cnt+folder_cnt;//总的文件数目=文件夹数目+目标文件数目
while(1)
{
if(pos_cnt
{
..............
..............>
原子哥,我回去看了看你的综合测试程序,Read_Book程序中你也是FileInfoStruct *FileInfo;这样定义的!!!!再者File_Browse程序中你也是这样定义的!!!你的却也没问题,也不会内存溢出.......也都用了Get_File_Info(......)函数。
void Read_Book(FileInfoStruct *FileName);
//文本浏览器(.txt/.c/.h/.lrc)
//支持FAT32/16文件系统的浏览.
void Ebook_Play(void)
{
FileInfoStruct *FileInfo;
u16 index=0; //当前选择的文件编号
//从根目录开始浏览
if(FAT32_Enable)Cur_Dir_Cluster=FirstDirClust;//根目录簇号
else Cur_Dir_Cluster=0;
Fat_Dir_Cluster=Cur_Dir_Cluster;//父目录就是当前目录
while(1)
{
POINT_COLOR=RED;
Load_Gui_Bro("选择");//显示GUI界面
Show_Str(88,2,"电子图书",16,0x01);//叠加模式,非自动换行
index=File_Browse(T_LRC|T_TXT|T_C|T_H);//浏览文件夹
if(!index)return;//结束浏览,退出此功能!!!!!
Pen_Point.Key_Sta=Key_Up; //释放显示期间的触发
FileInfo=&F_Info[0];//开辟暂存空间.
Get_File_Info(Cur_Dir_Cluster,FileInfo,T_LRC|T_TXT|T_C|T_H,&index);//得到这张图片的信息
Read_Book(FileInfo);//读取TXT文件
}
}
u16 File_Browse(u32 file_type)
{
FileInfoStruct *FileInfo;
u16 folder_cnt;//文件夹的个数
u16 des_cnt; //目标文件的个数
u8 fcnt; //显示的文件数目
u16 temp;
u16 total_file;//总文件数目
u16 pos_cnt;//当前文件号 1~folder_cnt+des_cnt
u8 key;
Reset:
POINT_COLOR=BLUE; //蓝色笔头使用
folder_cnt=0;des_cnt=0;fcnt=0;key=0;pos_cnt=0;
Get_File_Info(Cur_Dir_Cluster,FileInfo,T_FILE,&folder_cnt);//得到当前目录下文件夹的个数
Get_File_Info(Cur_Dir_Cluster,FileInfo,file_type,&des_cnt);//得到当前目录下目标文件的个数
total_file=des_cnt+folder_cnt;//总的文件数目=文件夹数目+目标文件数目
while(1)
{
if(pos_cnt
{
..............
..............>
举报