powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / VC++ Передача данных
25 сообщений из 28, страница 1 из 2
VC++ Передача данных
    #33784983
Дьяк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
есть у меня форма. в этой форме в listbox'е чего то написано. я хочу не сохраняя данные из листбокса в файле передать их в листбокс другой формы. как это сделать?
...
Рейтинг: 0 / 0
VC++ Передача данных
    #33785452
Дьяк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Господа, так как мне быть то? неужели нельзя обойтись без ненужного сохранения в файле? мне нужно просто передать эти данные в другую форму для редактирования. далее уже будет производиться сохранение. (окончательного варианта данных, а не промежуточного).
подскажите пожалуста кто знает!
...
Рейтинг: 0 / 0
VC++ Передача данных
    #33785584
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Отче! А зачем в файл сохранять-то? Есть контрол...
...
Рейтинг: 0 / 0
VC++ Передача данных
    #33785622
Дьяк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
не понял. можно подробнее?
есть куча всего написанного в листбоксе + данные, которые туда (в этот листбокс не входят). мне надо что бы эти данные были отображены в другом листбоксе другой формы.
...
Рейтинг: 0 / 0
VC++ Передача данных
    #33785697
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пишу на неком абстрактном языке (лень на C++ потомучто)

Код: plaintext
1.
Form2.ListControl2 := Form1.ListControl1;

Что непонятного?
...
Рейтинг: 0 / 0
VC++ Передача данных
    #33785829
Дьяк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonForm2.ListControl2 := Form1.ListControl1; так мы же форму эту предварительно закрываем, то есть все данные листбокса уничтожаются ещё до передачи в другую форму!

ну и ещё вопрос: как проще перенести из одного листбокса (ну напр. листбох1) все данные в другой листбокс (напр. листбох2), если в листбох2 уже содержатся какие то данные? кроме цикла в голову ничего не приходит, поэтому и спросил, может это можно как-то одной командой написать?
...
Рейтинг: 0 / 0
VC++ Передача данных
    #33785830
Дьяк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дьяктак мы же форму эту предварительно закрываем, то есть все данные листбокса уничтожаются ещё до передачи в другую форму! поэтому и напрашивается мысль эти данные куда то сохранять...
...
Рейтинг: 0 / 0
VC++ Передача данных
    #33785865
Homosum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дьяк Дьяктак мы же форму эту предварительно закрываем, то есть все данные листбокса уничтожаются ещё до передачи в другую форму! поэтому и напрашивается мысль эти данные куда то сохранять...

Записывай данные в другую форму при закрытии первой формы.
...
Рейтинг: 0 / 0
VC++ Передача данных
    #33785956
Дьяк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
пишу на кнопке закрытия формы:
Код: plaintext
1.
2.
CDlg2::m_ListBox = CDlg1::m_ListBox3; // error: illegal reference to data member 'CDlg2::m_ListBox' in a static member function
CDialog::OnOK();
че с этим делать? как правильно написать?
...
Рейтинг: 0 / 0
VC++ Передача данных
    #33786165
Дьяк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну и кроме этой ошибки остается в силе вопрос:
как скопировать данные из первого листбокса во второй, если во втором уже содержатся записи? это можно сделать только построчно в цикле или может есть какая-нибудь специальная функция?
(MS VC, MFC)
...
Рейтинг: 0 / 0
VC++ Передача данных
    #33786220
Фотография Lelikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Копируйте в цикле.
________________________________________________________
Глюк - это высокоорганизованная система не поддающихся определению частиц
...
Рейтинг: 0 / 0
VC++ Передача данных
    #33787929
Дьяк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а что делать с этой ошибкой? как правильно написать?
...
Рейтинг: 0 / 0
VC++ Передача данных
    #33788619
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дьякпишу на кнопке закрытия формы:
Код: plaintext
1.
2.
CDlg2::m_ListBox = CDlg1::m_ListBox3; // error: illegal reference to data member 'CDlg2::m_ListBox' in a static member function
CDialog::OnOK();
че с этим делать? как правильно написать?


в файл - это Вы погорячились. Не, ну можно конечно же писать не только в файл а ышо ждать флэшку пользователя, пока не вставит...Но как то Ваше предложение не из данной оперы вообще.
как один из вариантов..
1) в том месте где Вы вызываете свой диаложек(я так понял что модальный) с методом DoModal() - по уму вы должны отработать код возврата (а нахфига что то сохранять, если нажали канцель?) и написать нечто

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
  if(DlgXren.DoModal() == IDOK)
  {
    // вот тут и пишем необходимый код извлечения из Вашего диаложка необходимых Вам потрохов.
  }
  else
  {
  }

2) нуна снабдить Ваш диаложек некими методами которые вернут Вам ссылку на данные либо сами данные из первого диаложка (енто чтоб грамотно создать видимость инкапсуляции).
3) в новом диаложке создать методы по инициализации этих самих данных (не ну мона конечно и напрямую тук-тук к внутренним членам класса - дабы не извращаться, хозяин барин дык сказать..)
4) в скобочках ОКЕЙно вставить а) создание второго диаложка б) зов методов из первого диаложка и передачу возвращаемого ими результат во второй диаложек и позвать DoModal() второго диаложка...


с уважением
(круглый)
ЗЫ
Если я Вас правильно понял...
...
Рейтинг: 0 / 0
VC++ Передача данных
    #33788712
Дьяк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
как раз второй диалог является немодальным. первый модальный (тот из которого берем), а второй - нет...
...
Рейтинг: 0 / 0
VC++ Передача данных
    #33788744
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дьяккак раз второй диалог является немодальным. первый модальный (тот из которого берем), а второй - нет...

если второй не модальный, то...
1) время жизни данных извлечённых из первого диаложка - не должно зависить от времени жизни этого диаложка..
2) возможна работа не модального диаложка и без данных (с пустыми)...

отсюда напрашивается инкапсуляция этих самих данных в нечто удобное для юзанья (перемещения)... например класс или структуру. Остаёться сделать ей методы инициализации, копирования, возможно работу с нужными Вам контролами... Управлять временем жизни данных, используемых в не модальном диаложке, должен код отвечающий за разбор очереди не модального диаложка.


где то так (первое, что пришло на ум)...

с уважением
(круглый)
...
Рейтинг: 0 / 0
VC++ Передача данных
    #33788757
Дьяк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ага, с этим разобрался, спасибо.
теперь по поводу добавления в конец одного листбокса данных из другого листбокса:
напр. что бы получит значение в эдите из листбокса, писал так:
Код: plaintext
m_ListBox.GetText(m_ListBox.GetCurSel(), m_edit);
делаю аналогично перенос в листбокс, только в цикле:
Код: plaintext
1.
2.
3.
4.
5.
CString str;
...
for( ........)
{
   m_ListBox.GetText(m_ListBox.GetCurSel(), str);   // fatal error
почему на этой строке выдается фатальная ошибка, хотя всё сделано по аналогии?????????
...
Рейтинг: 0 / 0
VC++ Передача данных
    #33788768
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дьяк....почему на этой строке выдается фатальная ошибка, хотя всё сделано по аналогии?????????

я лучше кусок из МСДНа приведу...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
// The pointer to my list box.
extern CListBox* pmyListBox;

// Dump all of the items in the list box.
#ifdef _DEBUG
   CString str, str2;
   int n;
   for (int i= 0 ;i < pmyListBox->GetCount();i++)
   {
      n = pmyListBox->GetTextLen( i );
      pmyListBox->GetText( i, str.GetBuffer(n) );
      str.ReleaseBuffer();

      str2.Format(_T("item %d: %s\r\n"), i, str.GetBuffer( 0 ));
      afxDump << str2;
   }
#endif

и пару коментариев...
Хочу обратить Ваше внимание на работу с CString(ом) - это аллокирование массива байт и после использования - освобождения. Надо помнить, что данный класс хранит любые символы, в том числе и нули (очень частая ошибка в предположении, что нулём мона обрезать его длину - кстати не плохой тест на достаточно сильные познания в MFC)...

удачи Вам
(круглый)
...
Рейтинг: 0 / 0
VC++ Передача данных
    #33791087
Дьяк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
этот пример тоже вызывает фатальную ошибку. подскажите лучше если можно что надо переделать в моем коде ?
...
Рейтинг: 0 / 0
VC++ Передача данных
    #33791899
Дьяк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
приведенный Вами пример вызывает фатальную ошибку на первой же строке:
Код: plaintext
n = pmyListBox->GetTextLen( i );

мне кажется у меня проблемма просто в том, что я не могу присвоить переменной текущую строку листбокса. как это сделать? у меня такой код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
CString str;
for (int j= 0 ; j<m_ListBox.GetCount(); j++)
{
   str="";
   m_ListBox.GetText(m_ListBox.GetCurSel(), str);  // fatal error
   m_ListBox2.AddString(str);
   UpdateData(false);
}
на сколько я понимаю, str должна быть не типа CString. А какого?
...
Рейтинг: 0 / 0
VC++ Передача данных
    #33791912
nikname
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я бы создал вектор для данных в обеих формах.
При закрытии первой данные она сама перегоняет в вектор, остаётся только подсунуть вектор второй форме.
...
Рейтинг: 0 / 0
VC++ Передача данных
    #33792036
Фотография hell
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolobok0класс хранит любые символы, в том числе и нули

Символом нуля('0') вообще сложно что-либо обрезать :-)
...
Рейтинг: 0 / 0
VC++ Передача данных
    #33792199
Дьяк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
niknameЯ бы создал вектор для данных в обеих формах.
При закрытии первой данные она сама перегоняет в вектор, остаётся только подсунуть вектор второй форме.Здесь уже речь не о двух формах. оба листбокса находится в одной форме. мне кажется для того что бы перегнать данные из одного листбокса в другой не стоит создавать вектор. поэтому я хотел сделать так: берем первую строку листбокса, загоняем её в какую-то переменную, а потом значение этой переменной присваиваем строке другого листбокса. только присвоить текущее значение листбокса переменной у меня как раз и не выходит, потому что выдается фатальная ошибка!

hellСимволом нуля('0') вообще сложно что-либо обрезать :-)так как объявить эту злощасную STR что бы ей можно было присвоить текущее значение листбокса????????? че то правда не догоняю 8-( если знаете - подскажите пожалуста!
...
Рейтинг: 0 / 0
VC++ Передача данных
    #33794017
Дьяк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
можь все таки здесь есть человек, который знает что делать с этими типами?
...
Рейтинг: 0 / 0
VC++ Передача данных
    #33794398
Дьяк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
у меня к Вам большучая просьба, если кому не влом - поместите 2 заполненных листбокса и кнопку (которая перебросит из одного листбокса в другой) на одну форму, и воспользуйтесь напр. моим кодом или кодом колобка, у Вас это вызовет ошибку или нет? может вас натолкнет на мысль как исправить её? я честно непонимаю что с ней делать
...
Рейтинг: 0 / 0
VC++ Передача данных
    #33794451
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не читал

--------------------------------------------------------------
Don't worry - wear Huggies
...
Рейтинг: 0 / 0
25 сообщений из 28, страница 1 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / VC++ Передача данных
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]