Join Now
Quality Rating:
  • Currently 0.0 / 5
(0.0 / 5 - 0 votes cast)
Expertise Level:
  • Currently 0.0 / 5
(0.0 / 5 - 0 votes cast)

This page was last modified 15:16, 14 January 2008.

Использование TKeyArrayFix для сортировки массива

From Forum Nokia Wiki

Перевод с английского, оригинальная статья находится здесь.


Следующий пример демонстрирует создание и сортировку массива структур. Сканируя директорию в поиске JPG файлов, мы будем добавлять в массив полный путь, размер и дату создания каждого найденного файла. После этого, массив будет отсортирован по дате создания файла.

  • .H
struct TFileDetails
{
    public :
        TFileName iFileName;
	TInt64 iFileTime;
	TInt iFileSize;
};
 
CArrayFixFlat<TFileDetails> *iGalFileArrayTemp;  //объявление
  • .Cpp
iGalFileArrayTemp = new CArrayFixFlat<TFileDetails>(10); // создаем экземпляр



Сканируем директорию и получаем данные о файле. Используем GetDir(), чтобы получить отфильтрованный по расширению список содержащихся в директории файлов.

User::LeaveIfError(fileSession.GetDir(KCFileSpec,KEntryAttMaskSupported,ESortByDate,iDirListC));

где KCFileSpec:

_LIT(KCFileSpec,"C:\\Nokia\\Images\\*.jpg");




for (TInt i1=0;i1<iDirListC->Count();i1++)
{
	TFileName iT1;			
	iT1.Copy(KCDirName);
			
	iT1.Append((*iDirListC)[i1].iName);				
			
	TTime iTime;
	iTime = (*iDirListC)[i1].iModified;
			
	TFileDetails iFileDetails;
	iFileDetails.iFileName.Copy(iT1);
	iFileDetails.iFileTime = iTime.Int64();
	iFileDetails.iFileSize = (*iDirListC)[i1].iSize;
			
			
	iGalFileArrayTemp->AppendL(iFileDetails);
}


Вы можете просканировать несколько директорий. После этого, полученный массив можно отсортировать следующим образом:

TKeyArrayFix timeKey(_FOFF(TFileDetails,iFileTime),ECmpTInt64);	
iGalFileArrayTemp->Sort(timeKey);


В данном случае, массив был отсортирован по дате создания файла.

  • Удаление массива


if(iGalFileArrayTemp)
delete iGalFileArrayTemp;
 
Powered by MediaWiki
     
     RDF Facets:
     
     
     qfnZtypeQUqfnTypeZCommunityContentQ
     qfnZtypeQUqfnTypeZWebpageQ
     qfnZtypeQUqfnTypeZWikiContentQ
     qmarsZlanguageQUxhttpE3aE2fE2fswE2enokiaE2ecomE2flanguageE2d1E2fenX