Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C++ Builder > вектор, ListBox и Memo |
Автор: artsb 27.11.2007, 00:00 | ||
Вот кусочек кода:
Здесь при нажатии на кнопку, в вектор добавляется новая запись и в ListBox записывается строка. При щелчке по ListBox'у определяется индекс выбранной строки. По номеру индекса находится номер записи в векторе и данные из него заносятся в поля. Так вот, в Label и Edit заносятся хорошо, а Memo почему-то остаётся пустым. В чём может быть дело? |
Автор: JackYF 27.11.2007, 00:32 |
Имхо, в указателях: *Memo1->Lines=*grp[i].inf; |
Автор: Fazil6 27.11.2007, 00:42 | ||||||
замени на
Добавлено через 8 минут и 25 секунд и здесь аналогично
|
Автор: artsb 27.11.2007, 10:22 |
JackYF если пишу *Memo1->Lines=*grp[i].inf; вылетает ошибка. Fazil6 если делаю как ты пишешь, программа запускается, но когда нажимаешь кнопку, выскакивает ошиба. Ругается на эту строку: temp.inf->Assign(Memo1->Lines); Если без неё, то никаких изменений нет. |
Автор: HappyLife 27.11.2007, 10:52 | ||
|
Автор: Fazil6 27.11.2007, 10:56 | ||
вообще-то по уму надо создавать объект для inf
|
Автор: artsb 27.11.2007, 13:29 |
Спасибо всем. Что-то я ступил. Сохранял в векторе в inf указатель на мемо, но текст в мемо каждый раз изменялся. Работает код предложенный HappyLife и Fazil6. За что им БОЛЬШОЕ спасибо. Скажите теперь, какой из них лучше использовать. |
Автор: SenkraD 27.11.2007, 14:00 |
artsb, использовать необходимо обе подсказки (более коректнее звучит, исправления) |
Автор: artsb 27.11.2007, 16:40 |
SenkraD но я же не могу одновременно и то и то написать. ![]() |
Автор: Fazil6 27.11.2007, 16:42 |
ну так смотря что тебе нужно. Если тебе массив строк в inf нужен, то моё, если просто строкой весь текст, то и второй вариант сойдет |
Автор: artsb 27.11.2007, 22:17 |
Fazil6, тогда твоё. Всем спасибо. Вопрос решён. |
Автор: artsb 29.11.2007, 23:45 |
Странно! Когда использую способ предложенный Fazil6, при создании первого элемента массива всё нормально, а вот при создании второго вылетает ошибка. Воспользовался способом HappyLife, всё нормально и работает так как надо. Кто-нибудь знает с чем это связано. Просто интересно. |
Автор: Fazil6 30.11.2007, 10:50 |
В какой массив? какая ошибка? ты правда считаешь, что тут кто-то догадается? |
Автор: SenkraD 30.11.2007, 11:01 |
artsb, если ты о первом посте Fazil6 без использования его второго поста, то твой креш по причине AV очевиден. P.S. А вообще, сколько раз говорить, что здесь телепатов нет - откуда мне (нам) знать как ты используеш подсказки того или иного участника дискусии, если это можно так назвать |
Автор: artsb 30.11.2007, 18:43 | ||
Использую эту структуру:
И как я писал, при добавлении второго элемента в вектор, вылетает ошибка: |
Автор: SenkraD 30.11.2007, 19:58 | ||
artsb, нужно ещё оператор равно и конструктор копирования реализовать:
|
Автор: artsb 1.12.2007, 16:47 |
Пробовал так: temp.inf->Assign(Memo1->Lines); Но результат тот же. |
Автор: SenkraD 2.12.2007, 10:53 | ||
artsb, ты в инете смотрел что такое конструкт ор копирования и когда он необходим? Я специально не писал пример, чтобы ты поискал. Ну раз дело туго, то:
1. Вообщем, как-то так (писал с головы без Builder'а под рукой). 2. Чтобы избежать лишних копирований лучше хранить в векторе указатели, но тогда нужно будет в конце для всех элементов вектора вызвать delete 3. И почитай о работе с памятью (не помешает) |
Автор: artsb 2.12.2007, 16:39 |
Спасибо. |