IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Открытие содерж. файла в диалоговом окне, Visual C++, MFC
сообщение
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 96
Пол: Мужской
Реальное имя: John

Репутация: -  0  +


Люди кто знает подскажите решение такой задачки.

Даны два поля, в одно из которых нужно ввести путь к файлу, а в другом(List Box) должно отобразиться содержимое этого файла, после нажатия кнопки.

Сообщение отредактировано: @^WARlock^@ -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






В чем проблема? Открываешь файл со введенным именем, построчно его читаешь (ReadString) и пишешь прочитанную строку в CListBox с помощью AddString(). Что из этого не получается?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Пионер
**

Группа: Пользователи
Сообщений: 96
Пол: Мужской
Реальное имя: John

Репутация: -  0  +


А код для открытия файла будет такой?

CFile cf;
cf.Open( "c:\1.txt", CFile::modeCreate|CFile::modeReadWrite);
char szSampleText[100];
UINT lBytesRead = cf.Read (szSampleText,100);
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Это у тебя не открытие, а создание файла получается. Затрешь все содержимое...

cf.Open( "c:\\1.txt", CFile::modeRead);

будет вполне достаточно для отображения файла в ListBox-е.

Update: слеш - двойной...

Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Пионер
**

Группа: Пользователи
Сообщений: 96
Пол: Мужской
Реальное имя: John

Репутация: -  0  +


А ну да modeRead -файл открывается только для чтения, а modeCreate - создается новый файл. Ошибочка вышла.

Но этот код я расчитываю записать в кнопке, а как кнопку связать с ListBox.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






А что, если ты напишешь для кнопки:

CFile cf;
if (cf.Open("C:\\1.txt", CFile::modeRead)) {
CString s;
while(cf.ReadString(s)) {
lst_box.AddString(s);
}
}

это будет противозаконно?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Пионер
**

Группа: Пользователи
Сообщений: 96
Пол: Мужской
Реальное имя: John

Репутация: -  0  +


Дайка я уточню т.е. допустим я сздаю кнопку и поле ListBox. Записываю этот код в кнопку и после нажатия на нее, содержимое файла покажется в ListBox.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Угу... Так и будет...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Пионер
**

Группа: Пользователи
Сообщений: 96
Пол: Мужской
Реальное имя: John

Репутация: -  0  +


Что-то не то. Программа находит 2 ошибки.
Вот как я делаю. Нажимаю на созданную кнопку два раза, появляется окно кода:

void CL3Dlg::OnButton1() 
{
//сюда я записываю код
CFile cf;
if (cf.Open("C:\\1.txt", CFile::modeRead))
{
CString s;
while(cf.ReadString(s)) // программа говорит, что в этой строке 2 ошибки
{
lst_box.AddString(s);
}
}
}


А если я убираю скобочку в начале и в конце, то прога говорит что 2 ошибки встроке:
CFile cf;


Из-за чего такое может быть?

Сообщение отредактировано: @^WARlock^@ -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гость






unsure.gif
Ну, да... Пользуйся не CFile, а CStdioFile.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Пионер
**

Группа: Пользователи
Сообщений: 96
Пол: Мужской
Реальное имя: John

Репутация: -  0  +


Поменял я CFile на CStdioFile. Всеровно две оштбки.

error C2065: 'lst_box' : undeclared identifier
error C2228: left of '.AddString' must have class/struct/union type

А в настройках ListBox, что надо выставить? Или код приписать?
lst_box.AddString(s);

lst_box это название?

Сообщение отредактировано: @^WARlock^@ -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Гость






Цитата
lst_box это название?
А ты как думаешь? Я что, телепат и знаю, КАК ты называешь свой ListBox? Или ты привел свой код полностью?

Цитата
А в настройках ListBox, что надо выставить? Или код приписать?
Да не надо никакой код никуда писать больше! Все, что надо сделать - я показал. Ты что в первый раз VC видишь? Или вас вообще не учат, прежде чем задание дать? Покажи, как ты назвал свой CListBox, я исправлю код, если ты сам не можешь догадаться.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Пионер
**

Группа: Пользователи
Сообщений: 96
Пол: Мужской
Реальное имя: John

Репутация: -  0  +


Цитата
Ты что в первый раз VC видишь? Или вас вообще не учат, прежде чем задание дать?

А говоришь, что не телепат.

Ну допустим я List box назвал LB, т.е. в коде программы надо будет поменять lst_box на LB.
Но ошибки то уткуда берутся?

Добавлено через 13 мин.
О атеперь говорит одна ошибка.
Вот такая:
error C2228: left of '.AddString' must have class/struct/union type


Добавлено через 18 мин.
Может глупый вопрос но на всякий случай для страховки, где обзывается поле ListBox.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Пионер
**

Группа: Пользователи
Сообщений: 96
Пол: Мужской
Реальное имя: John

Репутация: -  0  +


C предыдущим вопросом я разобрался, все работает, спасибо. Но я забыл, мне же еще поле Edit надо было включить.
В поле Edit надо ввести путь к файлу, нажать на кнопку и в поле ListBox появляется содержимое файла.
А мы сделали прогу только для выделенного текста.
Помогите доработать код программы.
void CL3Dlg::OnButton1() 
{
CStdioFile cf;
if (cf.Open("C:\\1.txt", CFile::modeRead))
{
CString s;
while(cf.ReadString(s))
{
m_List.AddString(s);
}
}
}




 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Пионер
**

Группа: Пользователи
Сообщений: 96
Пол: Мужской
Реальное имя: John

Репутация: -  0  +


Со всем я разобрался спасибо. Но хотелось бы модернизировать эту программу
void CL3Dlg::OnButton1() 
{
UpdateData();
CStdioFile cf;

if (cf.Open(m_Edit, CFile::modeRead))
{
CString s;
while(cf.ReadString(s))
{
m_List.AddString(s);
}
}
}


т.е. совместить с программой которая выводит на экран строки через одну. Которую помогал делать VOLVO в разделе "Файл и строки".
Короче вот она:
#include <iostream>
#include <fstream>

using namespace std;

const int max_line_size = 80;

int main()
{
ifstream in_file("1.txt", ios::in);
char buffer[max_line_size];

int count = 0;
while(in_file.getline(buffer, max_line_size))
{
if(!(count++ % 2))
cout << buffer << endl;
}
in_file.close();
return 0;
}

Подскажите, как это сделать. Я пробовал но безуспешно. Может потому, что одна написана в MFC, а другая в win32 Aplication?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 27.11.2020 10:42
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name