使用 book_scan_files 读取文件列表存储在 File_name[256] 全局变量内。 然后用files() 读出来。
namei也是全局变量
0:BOOK\ceshi1.txt
0:BOOK\ceshi2.txt
0:BOOK\ceshi3.txt
可是缺变成显示
0:BOOK\ceshi3.txt
0:BOOK\ceshi3.txt
0:BOOK\ceshi3.txt
弄了好久 还是不行。不知道是什么问题~~~
代码如下:
[mw_shl_code=c,true][/mw_shl_code]
[mw_shl_code=c,true]u8 book_scan_files(u8 * path)//±é?ú???? ??????????±í[/mw_shl_code]
[mw_shl_code=c,true]{
DIR dir;
FRESULT res;
FILINFO BOOKinfo;
u16 x=0;
u8 *fn;
u8 *Pname1;
namei=0;
Pname1=nameread; //全局变量 u8 nameread[50];
res = f_opendir(&dir,(const TCHAR*)path); //?ò??????????
if (res == FR_OK)
{
while(1)
{
res = f_readdir(&dir, &BOOKinfo); //????????????????????
if (res != FR_OK || BOOKinfo.fname[0] == 0) break; //?í?ó??/???©????,????
fn = (u8*)BOOKinfo.fname;
GUI_path_name(Pname1,"0:BOOK",fn); //?????·??
File_name1[namei]=Pname1; //全局变量 u8 *File_name[256];
namei++;
}
}
return res;
}[/mw_shl_code]
[mw_shl_code=c,true]void files(void)
{
u16 df;
for(df=0;df<namei;df++)
{
HzMat_Show_Str(55,100+x,200,16,16,File_name1[df],1,WHITE); //全局变量 u8 *File_name1[256];
LCD_DrawLine(30,132+x,lcddev.width-30,132+x,WHITE);
x=x+50;
}
}[/mw_shl_code]
万分感谢大家的指导。 问题已经解决。 我吧指针理解错误了:
修改后的代码如下:
[mw_shl_code=c,true] u8 *fn;
char Tnameread[50][50]={"\0"};
namei=0;
res = f_opendir(&dir,(const TCHAR*)path); //?ò??????????
GUI_files(0,25,lcddev.width, lcddev.height-25,path);
if (res == FR_OK)
{
while(1)
{
res = f_readdir(&dir, &BOOKinfo); //????????????????????
if (res != FR_OK || BOOKinfo.fname[0] == 0) break; //?í?ó??/???©????,????
fn = (u8*)BOOKinfo.fname;
GUI_path_name((u8*)Tnameread[namei],path,fn); //?????·??
File_name[namei]=Tnameread[namei]; //????±??? u8 *File_name[256];
namei++;
}
}
for(df=0;df<namei;df++)
{
HzMat_Show_Str(65,77+x,400,16,16,(u8*)File_name[df],1,WHITE); //????±??? u8 *File_name1[256];
GUI_ICO_Fill(15,70+x,45,100+x,(u16 *)Text);//30 16 147
LCD_DrawLine(3,110+x,lcddev.width-3,110+x,0x00);
x=x+50;
}
return res;
}[/mw_shl_code]
|