Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Помогите кто сможет  (Прочитано 6804 раз)
0 Пользователей и 1 Гость смотрят эту тему.
volkov75
Гость
« : 22-05-2007 13:10 » 

У меня проблема у меня есть текстовый файл, моя задача считать построчно и выделтить нужные мне столобцы. Я уже научился записывать в текстовый файл пример:
Код:
HANDLE hFile = CreateFile(FileName,
     GENERIC_WRITE, FILE_SHARE_READ,
      NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile == INVALID_HANDLE_VALUE)
     AfxMessageBox(_T("Не могу создать файл!"));
  else
   {
     CFile myFile(hFile);
     str = _T("Текст");
     myFile.Write(str,str.GetLength());
     myFile.Close();
    }

Как мне строчку считать подскажите ниже тест кода правильный или нет

Код:
	HANDLE hFile = CreateFile(strFileName,
         GENERIC_READ, FILE_SHARE_READ,
         NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);

if (hFile == INVALID_HANDLE_VALUE)
      AfxMessageBox(_T("Не могу открыть файл!"));
   else
    {
     CFile myFile(hFile);
while (myFile.GetPosition() != CFile::end)
{
myFile.Read(st,114);


}
myFile.Close();
}

« Последнее редактирование: 04-06-2007 08:07 от volkov75 » Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #1 : 22-05-2007 14:57 » 

1. Нет CDocument не надо в диалоге использовать.

2. Посмотри контрол CListCtrl - для простейшего отображения инфы в виде строчек и столбцов он подходит идеально.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
volkov75
Гость
« Ответ #2 : 22-05-2007 21:03 » 

1. Нет CDocument не надо в диалоге использовать.
А как предлогаешь передавать переменные, которые общии?Не понял
2. Посмотри контрол CListCtrl - для простейшего отображения инфы в виде строчек и столбцов он подходит идеально.
 Cпасибо, я учту, только у меня структуру выводить надо т.е. каждое поле в свою ячейку.
Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #3 : 23-05-2007 08:42 » 

1. Так же как ты и сейчас это делаешь. Ну может лучше сделать отдельный свой класс для хранения данных, чтобы не забивать App кучей полей данных.
А уже в App создать один объект этого типа.

class CMyData
{
       ...
       необходимые поля данных и ф-ции доступа к ним

       BOOL Init(....) { ... }

       void FillListCtrl(CListCtrl *pListCtrl) { pListCtlr->InsertItem(...);  ... }

};


class CMyProgramm : public CWinApp
{
       CMyData *GetData() { return &m_data; }
       ...
private:
       CMyData m_data;
};

доступ в любом месте проги через

например:

      theApp.GetData()->Init(...);

      theApp.GetData()->FillListCtrl(&lstCtrl);

и тд

CDocument оправдывает себя только при использовании в проектах с Doc/View архитектурой, когда например используются различные типы документов (DocumetTemplate) или различные представления (отображения) данных (CView). Диалог же используется как контейнер для контроллов, те и отображать инфу надо в контроллах. CListCtrl наиболее простой из них. Те тебе даже самому делать ничего не придётся.

2. Ну и плавно переходим ко второму пункту.
А в чём проблема? Выводи данные в каждую ячейку. Если не ошибаюсь ф-я называется SetItemText(), в которой ты указываешь у какой item (строка) у какой subitem (столбец) нужно изменить текст. Да я вот ещё что забыл. У контрола должен быть установлен стиль Report. Если пользуешься новыми системами, то можно даже линии отображать, для этого надо установить флажок (ща не помню, но это всё есть в MSDN).

Немного доработав его, можно даже редактировать текст в каждой ячейке.
Ну а для более сложных случаев есть контрол типа Grid, но он очень навороченный.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
volkov75
Гость
« Ответ #4 : 23-05-2007 11:28 » 

У меня проблема у меня есть текстовый файл, моя задача считать построчно и выделтить нужные мне столобцы. Я уже научился записывать в текстовый файл пример:
Код:
HANDLE hFile = CreateFile(FileName,
     GENERIC_WRITE, FILE_SHARE_READ,
      NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile == INVALID_HANDLE_VALUE)
     AfxMessageBox(_T("Не могу создать файл!"));
  else
   {
     CFile myFile(hFile);
     str = _T("Текст");
     myFile.Write(str,str.GetLength());
     myFile.Close();
    }

Как мне строчку считать подскажите ниже тест кода правильный или нет

Код:
	HANDLE hFile = CreateFile(strFileName,
         GENERIC_READ, FILE_SHARE_READ,
         NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);

if (hFile == INVALID_HANDLE_VALUE)
      AfxMessageBox(_T("Не могу открыть файл!"));
   else
    {
     CFile myFile(hFile);
while (myFile.GetPosition() != CFile::end)
{
myFile.Read(st,114);


}
myFile.Close();
}

« Последнее редактирование: 04-06-2007 08:08 от volkov75 » Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines