Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.97/67: Рейтинг темы: голосов - 67, средняя оценка - 4.97
0 / 0 / 0
Регистрация: 08.07.2009
Сообщений: 6

Как добавить данные в listbox

08.07.2009, 02:17. Показов 13077. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Очень срочно!!! Нужно сделать переводчик(с английского на русский и обратно) при помощи MFC (Dialog Based). Интерфейс примерно такой: Слева 2 радио-батона (1й-англо-русский, 2й-русско-английский), правее ListBox, еще правее EditBox (для перевода), сверху - editbox для инкрементного поиска слов в ListBox. Есть файл в формате *.txt со словами и переводом (выглядит так, слово1=перевод1 <enter> слово2=перевод2 <enter> и так далее). Проблема - необходимо прочитать текстовый файл так, чтобы слова, расположенные до знака "=" добавились в ListBox, а после знака "=" - в правый EditBox. Чтобы при выборе слова в listbox появлялся его перевод в правос editbox. И еще вопрос - как организовать верхний editbox для инкрементного поиска слов в ListBox. Помогите please. Заранее премного благодарен!!!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.07.2009, 02:17
Ответы с готовыми решениями:

Как добавить данные из базы в listbox?
Подскажите как вывести данные в listbox string queryString = &quot;SELECT Id, Name, FROM tab_Developers&quot;; using...

Как добавить данные в столбцы ListBox
Как добавить данные в столбцы ListBox

Как через listbox добавить название меню, а через listbox обработчик?
Как известно, в ListBox можно добавлять элементы любого типа. Заполните ListBox несколькими обработчиками событий. Пусть пользователь...

9
MCSD: APP BUILDER
 Аватар для IT_Exp
8795 / 1074 / 104
Регистрация: 17.06.2006
Сообщений: 32,602
08.07.2009, 10:31
Как добавить данные в listbox
C++
1
2
3
CListBox lb;
lb.Create(...);
lb.AddString(_T("Ы-ы-ы"));
Добавлено через 2 минуты 57 секунд
как организовать верхний editbox для инкрементного поиска слов в ListBox
повесить обработчик на событие изменение текста (ON_EN_CHANGE), получить текст, искать его в ListBox
0
0 / 0 / 0
Регистрация: 08.07.2009
Сообщений: 6
08.07.2009, 11:27  [ТС]
Спасибо, но можно несного поподробней, у меня не столько много опыта работы на Visual C++, вот что у меня есть на данный момент,
Code
1
2
3
4
5
6
7
.....................................
protected:
    HICON m_hIcon;
    FILE *file; // объект файла
    char* file_name; // имя текстового файла
    char load_string[1000]; // массив для хранения записей из текстового файла
......................................
222.txt - файл выглядит так(например):
p=p
1=11
s=sl
2=21
3=31
4=41
Мне нужно вытащить данные из файла в listbox до знака "равно" (на примере, который приведен выше: p,1,s,2,3,4), а при выборе слова в listbox - справа в editbox чтобы появлялся перевод в соответствие с выбранным словом в listbox
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
..........................................
void CSlovarDlg::OnButton1() 
{
    file_name="222.txt";
 
    file = fopen(file_name,"r"); // открытие файла 222.txt
 
    if(file != 0){
        while(!feof(file)){ // считываем файл до конца
        fgets(load_string,50,file);
        m_listc1.AddString(load_string); // добавляем в listbox
        
        }
    }
    
    fclose(file);
UpdateData(FALSE);    
}
открыл файл, прочитал до конца, но как именно добавлять слова, которые расположены в файле до знака "=" в listbox так и не понял пока...Помогите, уважаемые, буду очень ВАМ благодарен
0
MCSD: APP BUILDER
 Аватар для IT_Exp
8795 / 1074 / 104
Регистрация: 17.06.2006
Сообщений: 32,602
08.07.2009, 12:13
ищешь вхождение символа '=' в считанной строке
в простейшем (твоём) случае можно так
Code
1
2
TCHAR* p = _tcschr(buf, _T('='));
*p++ = _T('\0');
теперь buf - первое слово, p - второе слово
0
0 / 0 / 0
Регистрация: 08.07.2009
Сообщений: 6
08.07.2009, 13:02  [ТС]
Цитата Сообщение от Rififi Посмотреть сообщение
ищешь вхождение символа '=' в считанной строке
в простейшем (твоём) случае можно так
Code
1
2
TCHAR* p = _tcschr(buf, _T('='));
*p++ = _T('\0');
теперь buf - первое слово, p - второе слово
У меня получается считать только весь файл, а как считывать построчно, и Вы написали _tcschr(buf, _T('=')); как эта функция работает, у меня пишет 'error C2065: 'buf' : undeclared identifier'. Мне нужно, чтобы в ListBox'е были все строки до знака "=". Извини за такие "не очень умные" вопросы, но о таких функциях как _T и _tcschr() впервые слышу. Код не совсем понятен. _T('\0') - тоже не понятно...
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
08.07.2009, 13:04
Эта ошибка означает, что у тебя buf не объявлен. Мдя...
А что непонятного? Он дописывает ноль в конец строки. С-строки должны иметь нулевой символ на конце. Учим матчасть.
но о таких функциях как _T и _tcschr() впервые слышу
Открой msdn и почитай.
0
0 / 0 / 0
Регистрация: 08.07.2009
Сообщений: 6
08.07.2009, 13:27  [ТС]
Цитата Сообщение от Rififi Посмотреть сообщение
ищешь вхождение символа '=' в считанной строке
в простейшем (твоём) случае можно так
Code
1
2
TCHAR* p = _tcschr(buf, _T('='));
*p++ = _T('\0');
теперь buf - первое слово, p - второе слово
Код:
........................................ ........
C++
1
2
3
4
5
6
7
8
9
10
11
12
file_name="222.txt";
file = fopen(file_name,"r");
if(file != 0){
  while(!feof(file)){  
     fgets(load_string,50,file);
     char buf[1000] = load_string; 
     TCHAR* p = _tcschr(buf, _T('=')); 
     m_listc1.AddString(buf);
  }
}
fclose(file);
UpdateData(FALSE);
........................................
Объясни пожалучста что не так...

Добавлено через 7 минут 0 секунд
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
void CSlovarDlg::OnRadio1() 
{
 
file_name="222.txt";
 
file = fopen(file_name,"r");
 
if(file != 0){
while(!feof(file)){
 
 
fgets(load_string,50,file); // 
char buf[1000] = load_string; 
TCHAR* p = _tcschr(buf, _T('='));
m_listc1.AddString(buf);
 
}
}
 
fclose(file);
UpdateData(FALSE); 
}
Объясни что не так...пожалуста...
Можно на моем примере объяснить, как из файла 222.txt вытащить в listbox все то, что до "=", а при выборе слова в listbox'е чтобы в правом edit'е был перевод(слова после "=") соответствующий. Пожалуйста, пожалуйста, я плохо это понимаю, напишите пожалуйста на примере.
0
MCSD: APP BUILDER
 Аватар для IT_Exp
8795 / 1074 / 104
Регистрация: 17.06.2006
Сообщений: 32,602
08.07.2009, 13:51
Aleksaaa,
У меня получается считать только весь файл, а как считывать построчно, и Вы написали _tcschr(buf, _T('=')); как эта функция работает, у меня пишет 'error C2065: 'buf' : undeclared identifier'. Мне нужно, чтобы в ListBox'е были все строки до знака "=". Извини за такие "не очень умные" вопросы, но о таких функциях как _T и _tcschr() впервые слышу. Код не совсем понятен. _T('\0') - тоже не понятно...

это был просто пример.
тебе надо не buf использовать, а ту переменную, в которую было прочитано значение.
макрос _T и функции вида _t* нужны для unicode-совместимости, обычный тип char[*] лучше не использовать, иначе можно наткнуться на странные ошибки в новых студиях (>=2005) и старых проектах.

до выполнения этого кода строка выглядела так:
aaaaaaa=bbbbbbb
^buf
после:
aaaaaaa
^buf
bbbbbbb
^p
Добавлено через 2 минуты 16 секунд
ps. аа, пофиг. дольше объяснять. просто замени _T('=') на '=', _T('\0') на '\0' и _tcschr на strchr
1
0 / 0 / 0
Регистрация: 08.07.2009
Сообщений: 6
09.07.2009, 16:01  [ТС]
Огромное спаааааааааасибо

Добавлено через 56 минут 52 секунды
Rififi,

C++
1
2
3
4
5
6
void CSlovarDlg::OnSelchangeList1() 
{
    UpdateData(TRUE);
m_edit2 = p; // присвоение полю переменной справа от "="
UpdateData(FALSE);  
}
вроде присвоил p, а выводит только последнюю строку в файле, наверное указатель на последней строке остался...помоги please организовать вывод строки справа от "=" в текстовое поле, как сделать чтобы указатель перемещался по файлу после выбора нужного слова в listbox

Добавлено через 20 часов 59 минут 17 секунд
Данные из файла слева от "=" в листбокс занесены

Есть код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
void CSlovarDlg::OnRadio1() 
{
 
    file_name="222.txt";
 
    file = fopen(file_name,"r");
    
    if(file != 0){
        while(!feof(file)){
            
        
        fgets(load_string,50,file); 
        p = strchr(load_string, '=');
        *p++ = '\0';
        m_listc1.AddString(load_string);
        
        }
    }
    
    fclose(file);
UpdateData(FALSE);  
}
Получилось - load_string - это данные из файла слева от "=", p - данные из файла справа от "="

Далее привязал к србытию выбора строки в listbox:

C++
1
2
3
4
5
6
7
8
void CSlovarDlg::OnSelchangeList1() 
{
//long count = m_listc1.GetCount();
 
 fseek(file, 1 , SEEK_CUR); // перемещение указателя файла
m_edit2 = p; // присвоение текстовому полю значений справа от "=", т.е. перевода тех слов которые находятся в listbox
UpdateData(FALSE);
}
но по-моему неправильно... я просто в c++ очень мало работал...

Пожалуйста помогите сделать так чтобы в текстовом поле появлялся перевод слов из listbox, т.е. мне надо чтобы в текстовом поле отображались те слова, которые находятся в файле 222.txt(описание файла выше) справа от "=", но так чтобы в соответствии с выбором слова из listbox. На примере 222.txt - когда я выбираю из listbox "1" в текстовом поле должно появится "11", при выборе "2" - в текстовом поле "21" и так далее, помогите пожалуйста, после завтра сдавать надо...
Я с помощью
C++
1
fseek()
перемещаю курсор, а он не перемещается, как выдавал последнюю строку так и выдает, ответьте кто нибудь please...

Добавлено через 3 часа 32 минуты 29 секунд
please, помогите поместить в правый editbox перевод...я уже перепробовал все, как переместить курсор и считать нужный фрагмент строки, чтобы при выборе в listbox появлялся в edit текст, который справа от "=" (в файле 222.txt), хотя бы какую нибудь наводку, а то у меня уже голова не варит, мне скоро сдавать, в MSDN все на английском, а как правильно все функции связать чтобы выполнить алгоритм, не могу догнать, кто-нибудь....будьте так добры

Добавлено через 8 минут 28 секунд
C++
1
2
3
4
5
6
7
8
9
10
void CSlovarDlg::OnSelchangeList1() 
{
int count = m_listc1.GetCount();
 
    //p = strchr(load_string, '=');
        
    m_edit2 = p;
UpdateData(FALSE);
 
}
После этого m_edit2 = p; в edit добавляется "101", т.е. последняя строка в файле...
Как же все таки сделать чтобы в edit добавлялась строка в соответствии с выбором из listbox'а, никак не соображу
0
 Аватар для Богдан Корниено
9 / 9 / 0
Регистрация: 24.03.2011
Сообщений: 152
30.06.2012, 12:10
Товарищи, помогите разобраться. Мне нужно прочесть из текстового файла список айпи адрессов в ListBox. Делю я это так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <fstream>
in.open("contacts.txt");
        if(in.fail()){
            // действия, при ошибке открытия файла
            // создать новый файл
        } else {
            char str[15];
            TCHAR toOut[25];
            while(!in.eof()){
                in.getline(str, 15);
                _stprintf(toOut, _T("%ws"), str);
                SendMessage(hListBox, LB_ADDSTRING, 0, (LPARAM)toOut);
            }
        }
        in.close();
contacts.txt:
192.168.0.1
192.168.0.2
192.168.0.3
...
192.168.0.254

P.S. Пишу Win32 api приложение. Файл читается, но вместо адрессов в список выводятся какие-то каракули. По советуйте, что делать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.06.2012, 12:10
Помогаю со студенческими работами здесь

Как добавить добавить данные в базу данных посредством LINQ
Как добавить добавить данные в базу данных посредством LINQ to SQL Ошибка: Нарушение &quot;PK_TICKER_MINUTE&quot; ограничения PRIMARY...

как добавить в ListBox
Есть лист из 3 столбцов, наименование, Ед.из, цена При поиске наименования в listBox1 появляются варианты совпадений. Как добавить в...

Как прочитать данные из ячейки, и если она пуста добавить данные
Привет всем. У меня есть вот такой код: &lt;?php $arrqq = array($row-&gt;id); foreach($arrqq as $d =&gt; $s) { $imagetext =...

Как добавить ссылки в ListBox
Скажите, пожалуйста, возможно ли написать такой код, который бы добавлял в список ListBox ссылки, есть ли возможность создать событие на...

Как добавить строку в listbox?
как добавить строку в listbox между другими строками int d = (listBox2.SelectedIndex); lines = textBox8.Text; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Ниже машинный перевод статьи The Thinkpad X220 Tablet is the best budget school laptop period . Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы,. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru