Typedef clist < Long , Long > Longlist;
Typedef clist < Cstring, cstring &> Stringlist;
Int Getfilelist (cstring path, cstring Ext, longlist & Sizelist, stringlist & Namelist)
{
Cstring filename;
Win32_find_data fdata = { 0 };
Bool bfinished = False;
Int Nindex = 0 ;
Filename = Path + " *. " + EXT;
Handle hsearch = Findfirstfile (filename. getbuffer ( 0 ), & Fdata );
If (Hsearch = Invalid_handle_value)
Return 0 ;
While ( ! Bfinished)
{
If ( ! (Fdata. dwfileattributes & File_attribute_directory ))
{
If (Nindex = 0 )
{
Sizelist. addhead (( Long ) Fdata. nfilesizelow );
Filename. Format ( " % S % s " , Path, fdata. cfilename );
Namelist. addhead (filename );
}
Else
{
Position Pos;
Pos = Sizelist. findindex (nindex );
Sizelist. insertafter (Pos ,( Long ) Fdata. nfilesizelow );
Pos = Namelist. findindex (nindex );
Filename. Format ( " % S % s " , Path, fdata. cfilename );
Namelist. insertafter (Pos, filename );
}
Nindex ++ ;
}
If ( ! Findnextfile (hsearch, & Fdata ))
{
If (Getlasterror () = Error_no_more_files)
Bfinished = True;
}
}
Findclose (hsearch );
ReturnNindex;
}
Take the index of the maximum value in the long clist list:
Int Getmaxfileindex (longlist & Sizelist, Int Ncount)
{
Int Nindex = 0 ;
Long Nvalmax = Sizelist. gethead ();
For ( Int I = 1 ; I < Ncount; I ++ )
{
Long Nval = Sizelist. getat (sizelist. findindex (I ));
If (Nval > Nvalmax ){
Nvalmax = Nval;
Nindex = I;
}
}
Return Nindex;
}