Люди кто знает подскажите решение такой задачки.
Даны два поля, в одно из которых нужно ввести путь к файлу, а в другом(List Box) должно отобразиться содержимое этого файла, после нажатия кнопки.
В чем проблема? Открываешь файл со введенным именем, построчно его читаешь (ReadString) и пишешь прочитанную строку в CListBox с помощью AddString(). Что из этого не получается?
А код для открытия файла будет такой?
CFile cf;
cf.Open( "c:\1.txt", CFile::modeCreate|CFile::modeReadWrite);
char szSampleText[100];
UINT lBytesRead = cf.Read (szSampleText,100);
Это у тебя не открытие, а создание файла получается. Затрешь все содержимое...
cf.Open( "c:\\1.txt", CFile::modeRead);
А ну да modeRead -файл открывается только для чтения, а modeCreate - создается новый файл. Ошибочка вышла.
Но этот код я расчитываю записать в кнопке, а как кнопку связать с ListBox.
А что, если ты напишешь для кнопки:
CFile cf;
if (cf.Open("C:\\1.txt", CFile::modeRead)) {
CString s;
while(cf.ReadString(s)) {
lst_box.AddString(s);
}
}
Дайка я уточню т.е. допустим я сздаю кнопку и поле ListBox. Записываю этот код в кнопку и после нажатия на нее, содержимое файла покажется в ListBox.
Угу... Так и будет...
Что-то не то. Программа находит 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);
}
}
}
CFile cf;
Ну, да... Пользуйся не CFile, а CStdioFile.
Поменял я CFile на CStdioFile. Всеровно две оштбки.
error C2065: 'lst_box' : undeclared identifier
error C2228: left of '.AddString' must have class/struct/union type
А в настройках ListBox, что надо выставить? Или код приписать?
lst_box.AddString(s);
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);
}
}
}
Со всем я разобрался спасибо. Но хотелось бы модернизировать эту программу
void CL3Dlg::OnButton1()
{
UpdateData();
CStdioFile cf;
if (cf.Open(m_Edit, CFile::modeRead))
{
CString s;
while(cf.ReadString(s))
{
m_List.AddString(s);
}
}
}
#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;
}