Создание своего класса
От: FewartPro  
Дата: 16.07.09 22:24
Оценка: :)
Здраствуйте!!!

Помогите решить проблему.

Осваиваю создание своих классов на C++ Borland, и у меня такая проблема: Есть файл MyStringList.h, в котором такой код:

class TMyStringList
{
private:
TList *lList;

int __fastcall GetCount();

AnsiString __fastcall GetValue(int iIndex);
void __fastcall SetValue(int iIndex, AnsiString iValue);
public:

TMyStringList();
__property AnsiString Value[int iIndex] = {read = GetValue, write = SetValue};
__property int Count = {read = GetCount};

void __fastcall Clear();
void __fastcall Add(AnsiString iValue);
void __fastcall Delete(int iIndex);

~TMyStringList();
};

TMyStringList::TMyStringList()
{
this->lList = new TList;
}

TMyStringList::~TMyStringList()
{
delete this->lList;
this->lList = NULL;
}

AnsiString __fastcall TMyStringList::GetValue(int iIndex)
{
return *(AnsiString*)this->lList->Items[iIndex];
}

void __fastcall TMyStringList::SetValue(int iIndex, AnsiString iValue)
{
*(AnsiString*)this->lList->Items[iIndex] = iValue;
}

int __fastcall TMyStringList::GetCount()
{
return this->lList->Count;
}

void __fastcall TMyStringList::Add(AnsiString iValue)
{
AnsiString *iVal = new AnsiString;
*iVal = iValue;
this->lList->Add(iVal);
}

void __fastcall TMyStringList::Clear()
{
int i;

for(i=this->lList->Count-1; i>-1; i--)
{
this->Delete(i);
}
this->lList->Clear();
}

void __fastcall TMyStringList::Delete(int iIndex)
{
AnsiString *iValue;
iValue = (AnsiString *)this->lList->Items[iIndex];
delete iValue;

this->lList->Delete(iIndex);

this->lList->Pack();
}

Затем в файле Unit1.cpp, есть код:

TMyStringList *StringList = new TMyStringList();
StringList->Add("123");
ShowMessage(StringList->Value[0]); \\Здесь выводит 123
delete StringList;
ShowMessage(StringList->Value[0]); \\Здесь за место ошибкиAccess violation at address), выдает значение "", после чего вылезает ошибка ...class EInvalidPointer with message "Invalid pointer operation"...
Подскажите какие ошибки я допускаю при создании класса?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.