Здравствуйте уважаемые коллеги. Пробую сделать пользовательскую сортировку в TStringList. Вываливается в ошибку "Invalid Pointer Operation" Если функции CustomSort не использовать Item1 и Item2 то программа ошибки не выдает. В чем же дело? Код ниже. Еще файл прикрепил с исходником
| Код | // ---------------------------------------------------------------------------
#include <vcl.h> #pragma hdrstop
#include <tchar.h> #include <cstring.h> // ---------------------------------------------------------------------------
#pragma argsused
enum TGender { grMale, grFemale };
class TItem : public TObject { public: int Hight; UnicodeString Name; TGender Gender; };
int __fastcall CustomSort(TStringList* List, int Index1, int Index2) { TItem *Item1, *Item2;
Item1 = dynamic_cast<TItem*>(List->Objects[Index1]); Item2 = dynamic_cast<TItem*>(List->Objects[Index2]);
// далее сравниваем // ... }
int _tmain(int argc, _TCHAR* argv[]) { TStringList* List = new TStringList; TItem* Item;
List->OwnsObjects = true;
Item = new TItem; Item->Name = "Джон"; Item->Hight = 171; Item->Gender = grMale; List->AddObject(Item->Name, Item);
Item = new TItem; Item->Name = "Мэри"; Item->Hight = 160; Item->Gender = grFemale; List->AddObject(Item->Name, Item);
Item = new TItem; Item->Name = "Стефан"; Item->Hight = 181; Item->Gender = grMale; List->AddObject(Item->Name, Item);
Item = dynamic_cast<TItem*>(List->Objects[0]);
List->CustomSort(CustomSort);
List->Sort();
List->Free(); } // ---------------------------------------------------------------------------
|
|