Поиск:

Ответ в темуСоздание новой темы Создание опроса
> вектор, ListBox и Memo 
V
    Опции темы
SenkraD
Дата 30.11.2007, 19:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 933
Регистрация: 3.2.2006
Где: Украина::Киев

Репутация: 9
Всего: 23



artsb,  нужно ещё оператор равно и конструктор копирования реализовать:
Код

void __fastcall TForm1::Button1Click(TObject *Sender)
{
gr temp;
temp.name=Edit2->Text;
temp.www=Edit1->Text;
temp.inf=Memo1->Lines; // Нужен temp.inf->Assign(Memo1->Lines);
                                        // иначе ты будеш указывать туда куда и Memo1->Lines = изменил текст в Memo1
                                        // и он изменился в векторе + при таком раскладе все в векторе будут указывать на
                                        // одно и тоже место - короче, тебе не это нужно 
grp.push_back(temp); // тут вызывается конструктор копирования для  того, что бы занести temp в вектор
ListBox1->AddItem(temp.name,ListBox1);
}

// temp - временный обьект - после выхода с функи он разрушется ->
//  вызовется деструктор -> всё грохнется, ибо ты в деструкторе сносиш указатель  и ещё не обнуляеш ->
//  елементы вектора и Memo1 указывают на муссор. и при первой попытке обращения к их методам вызовет крах.

// P.S. Знатоки поправьте если я не прав



--------------------
 Имеющий язык - да не убоится спросить! 
user posted image
PM MAIL ICQ   Вверх
artsb
Дата 1.12.2007, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



Пробовал так:
temp.inf->Assign(Memo1->Lines);
Но результат тот же.


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
SenkraD
Дата 2.12.2007, 10:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 933
Регистрация: 3.2.2006
Где: Украина::Киев

Репутация: 9
Всего: 23



artsb, ты в инете смотрел что такое конструкт ор копирования и когда он необходим?
Я специально не писал пример, чтобы ты поискал. Ну раз дело туго, то:
Код

struct gr{
    AnsiString name;
    AnsiString www;
    TStrings *inf;
    gr()
    {
        inf = new TStringList();
    }

    gr(const gr &rhv)
    {
        name = rhv.value;
        www = rhv.www;
        
        inf = new TStringList();
        inf->Assign(rhv->inf);
    }

    ~gr()
    {
        delete inf;
    }
};
vector<gr> grp;
//...
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    gr temp;
    temp.name = Edit2->Text;
    temp.www = Edit1->Text;
    temp.inf->Assign(Memo1->Lines);
    grp.push_back(temp);
    ListBox1->AddItem(temp.name, ListBox1);
}
//...
void __fastcall TForm1::ListBox1Click(TObject *Sender)
{
    int i                      =ListBox1->ItemIndex;
    Label4->Caption =grp[i].www;
    Edit2->Text         =grp[i].name;
    Memo1->Lines->Assign(grp[i].inf);
}


1. Вообщем, как-то так (писал с головы без Builder'а под рукой).
2. Чтобы избежать лишних копирований лучше хранить в векторе указатели,
    но тогда нужно будет в конце для всех элементов вектора вызвать delete
3. И почитай о работе с памятью (не помешает)


--------------------
 Имеющий язык - да не убоится спросить! 
user posted image
PM MAIL ICQ   Вверх
artsb
Дата 2.12.2007, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



Спасибо.


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0785 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.