Поиск:

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


Эксперт
****


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

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



Вот кусочек кода:
Код

... // библиотеки

struct gr{
AnsiString name;
AnsiString www;
TStrings *inf;
};
vector<gr> grp;

...

void __fastcall TForm1::Button1Click(TObject *Sender)
{
gr temp;
temp.name=Edit2->Text;
temp.www=Edit1->Text;
temp.inf=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=grp[i].inf;
}

...


Здесь при нажатии на кнопку, в вектор добавляется новая запись и в ListBox записывается строка. При щелчке по ListBox'у определяется индекс выбранной строки. По номеру индекса находится номер записи в векторе и данные из него заносятся в поля. Так вот, в Label и Edit заносятся хорошо, а Memo почему-то остаётся пустым. В чём может быть дело?

Это сообщение отредактировал(а) artsb - 27.11.2007, 00:03


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


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 4
Всего: 162



Цитата(artsb @  27.11.2007,  00:00 Найти цитируемый пост)
Memo1->Lines=grp[i].inf;

Имхо, в указателях:

*Memo1->Lines=*grp[i].inf;


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Fazil6
Дата 27.11.2007, 00:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 11
Всего: 60



Код

Memo1->Lines=grp[i].inf;

замени на
Код

Memo1->Lines->Assign(grp[i].inf);


Добавлено через 8 минут и 25 секунд
и здесь аналогично
Код

temp.inf=Memo1->Lines; // заменить на
temp.inf->Assign(Memo1->Lines);

PM MAIL   Вверх
artsb
Дата 27.11.2007, 10:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



JackYF если пишу
*Memo1->Lines=*grp[i].inf; 
вылетает ошибка.


Fazil6 если делаю как ты пишешь, программа запускается, но когда нажимаешь кнопку, выскакивает ошиба. Ругается на эту строку:
temp.inf->Assign(Memo1->Lines);
Если без неё, то никаких изменений нет.


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


Опытный
**


Профиль
Группа: Участник
Сообщений: 642
Регистрация: 17.5.2006

Репутация: 4
Всего: 8



Код

... // библиотеки
struct gr{
AnsiString name;
AnsiString www;
AnsiString inf;
};
vector<gr> grp;
...
void __fastcall TForm1::Button1Click(TObject *Sender)
{
gr temp;
temp.name=Edit2->Text;
temp.www=Edit1->Text;
temp.inf=Memo1->Lines->Text;
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->Text=grp[i].inf;
}
...

PM MAIL   Вверх
Fazil6
Дата 27.11.2007, 10:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 11
Всего: 60



Цитата(artsb @  27.11.2007,  10:22 Найти цитируемый пост)
Ругается на эту строку:temp.inf->Assign(Memo1->Lines);

вообще-то по уму надо создавать объект для inf

Код

struct gr{
AnsiString name;
AnsiString www;
TStrings *inf;

gr()
{
   inf = new TStringList();
}

~gr()
{
    delete inf;
}

};

PM MAIL   Вверх
artsb
Дата 27.11.2007, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Спасибо всем. Что-то я ступил. Сохранял в векторе в inf указатель на мемо, но текст в мемо каждый раз изменялся.
Работает код предложенный HappyLife и Fazil6. За что им БОЛЬШОЕ спасибо. 

Скажите теперь, какой из них лучше использовать.


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


Опытный
**


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

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



artsb,  использовать необходимо обе подсказки (более коректнее звучит, исправления)


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


Эксперт
****


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

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



SenkraD но я же не могу одновременно и то и то написать. smile 


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


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 11
Всего: 60



Цитата(artsb @  27.11.2007,  16:40 Найти цитируемый пост)
SenkraD но я же не могу одновременно и то и то написать.

ну так смотря что тебе нужно. Если тебе массив строк в inf нужен, то моё, если просто строкой весь текст, то и второй вариант сойдет
PM MAIL   Вверх
artsb
Дата 27.11.2007, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Fazil6, тогда твоё.
Всем спасибо. Вопрос решён.


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


Эксперт
****


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

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



Странно! Когда использую способ предложенный Fazil6, при создании первого элемента массива всё нормально, а вот при создании второго вылетает ошибка.
Воспользовался способом HappyLife, всё нормально и работает так как надо.
Кто-нибудь знает с чем это связано. Просто интересно.


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


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 11
Всего: 60



Цитата(artsb @  29.11.2007,  23:45 Найти цитируемый пост)
Кто-нибудь знает с чем это связано. Просто интересно.

 В какой массив? какая ошибка?
ты правда считаешь, что тут кто-то догадается?
PM MAIL   Вверх
SenkraD
Дата 30.11.2007, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



artsb, если ты о первом посте Fazil6 без использования
 его второго поста, то твой креш по причине AV очевиден.

P.S. А вообще, сколько раз говорить, что здесь телепатов нет - откуда
мне (нам) знать как ты используеш подсказки того или иного участника
дискусии, если это можно так назвать


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


Эксперт
****


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

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



Использую эту структуру:
Код

struct gr{
AnsiString name;
AnsiString www;
TStrings *inf;
gr()
{
   inf = new TStringList();
}
~gr()
{
    delete inf;
}
};
vector<gr> grp;
...
void __fastcall TForm1::Button1Click(TObject *Sender)
{
gr temp;
temp.name=Edit2->Text;
temp.www=Edit1->Text;
temp.inf=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=grp[i].inf;
}
...

И как я писал, при добавлении второго элемента в вектор, вылетает ошибка:



Присоединённый файл ( Кол-во скачиваний: 7 )
Присоединённый файл  error.JPG 19,71 Kb


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

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

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

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

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


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

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


 




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


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

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