Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > TStringList->CustomSort


Автор: r00xus 21.4.2013, 21:48
Здравствуйте уважаемые коллеги. Пробую сделать пользовательскую сортировку в 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();
}
// ---------------------------------------------------------------------------

Автор: Avazart 22.4.2013, 03:33
Вероятно TItem плохое название для своего класса...

Добавлено через 54 секунды
А тут
Код

    // далее сравниваем
    // ...

Стоило привести полный код

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)