Модераторы: Daevaorn

Поиск:

Закрытая темаСоздание новой темы Создание опроса
> Запись в файл, Запись в файл из ListBox 
:(
    Опции темы
piratus
Дата 12.8.2003, 15:26 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Подскажите как записать данные из ListBox в файл.
  Вверх
Step
Дата 12.8.2003, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5151
Регистрация: 26.9.2002
Где: дурдом.UA

Репутация: 5
Всего: 25



читаешь по строчно, и пишешь... в чем проблемма собственно


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
SCHEPA
Дата 12.8.2003, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 7.6.2003
Где: Н.Н.

Репутация: нет
Всего: нет



Гораздо проще:
ListBox->Items->SaveToFile(FileName);
--------------------
Так что в лучших книгах всегда нет имен...
PM MAIL   Вверх
Step
Дата 13.8.2003, 09:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5151
Регистрация: 26.9.2002
Где: дурдом.UA

Репутация: 5
Всего: 25



SCHEPA, так то легче если это борланд, а если визуал, то не получиться...


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
Baa
Дата 13.8.2003, 10:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2639
Регистрация: 12.4.2002
Где: Москва

Репутация: 8
Всего: 12



Знаю, как иногда бывают проблемы даже с простыми вещами и как иногда не хватает кода (когда-то ведь тоже учился, посему...)
Посторался обойтись без MFC, но так как приложение было сделано на его основе, все же пару функция пришлось использовать
Код

HWND hWnd = AfxGetApp ()->m_pMainWnd->m_hWnd;
char szFileName [] = "c:\\listbox.txt";
char* lpString = new char [0xFF];
//заполняем наш ListBox
lstrcpy (lpString, "First Item");
::SendDlgItemMessage (hWnd, IDC_LIST1, LB_ADDSTRING, 0, (LPARAM) (LPCTSTR) lpString);
lstrcpy (lpString, "Second Item");
::SendDlgItemMessage (hWnd, IDC_LIST1, LB_ADDSTRING, 0, (LPARAM) (LPCTSTR) lpString);
lstrcpy (lpString, "Third Item");
::SendDlgItemMessage (hWnd, IDC_LIST1, LB_ADDSTRING, 0, (LPARAM) (LPCTSTR) lpString);

//теперь надо создать файл и внести в него содержимое нашего ListBox'а

//создаем файл и открываем его только для записи
HANDLE hFile = CreateFile (szFileName,
       GENERIC_WRITE,
       NULL,
       NULL,
       CREATE_ALWAYS,
       NULL,
       NULL);
//если файл создался и открылся, то выполняем наши действия, но сначала стоит проверить;-)
if (hFile != INVALID_HANDLE_VALUE)
{
 DWORD dwCount = (DWORD)::SendDlgItemMessage (hWnd, IDC_LIST1, LB_GETCOUNT, 0, 0); //получаем количество строк
 for (DWORD i = 0; i < dwCount; i++)
 {
  ::SendDlgItemMessage (hWnd, IDC_LIST1, LB_GETTEXT, i, (LPARAM) (LPCTSTR) lpString); //получим элемент listbox'а
  lstrcat (lpString, "\xD\xA"); //добавим перенос строки
  DWORD dwBytesCount;
  WriteFile (hFile, (LPCVOID) lpString, lstrlen (lpString), &dwBytesCount, NULL);//запишем в файл элемент
 }
 CloseHandle (hFile);//закроем наш файл
}

delete [] lpString;//удалим временный буфер



--------------------
"Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande
PM ICQ   Вверх
Step
Дата 13.8.2003, 11:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5151
Регистрация: 26.9.2002
Где: дурдом.UA

Репутация: 5
Всего: 25



тоже самое на мфс
Код

CString str,str2;
for (int i=0;i < 10;i++)
{
  str.Format(_T("item string %d"), i);
  pmyListBox.AddString( str );
}
// создание файла
CFile fl;

fl.Open("filename.txt",  CFile::modeCreate| CFile::modeWrite );
// получение данніх
int n;
  for ( i=0;i < pmyListBox.GetCount();i++)
  {
     n = pmyListBox.GetTextLen( i );
     pmyListBox.GetText( i, str.GetBuffer(n) );
     str.ReleaseBuffer();
// группировка данных
     str.Format("%s\r\n",str.GetBuffer(0));
  str2+=str;
     
  }
//Запись данных
fl.Write(LPCSTR(str2),str2.GetLength());
fl.Close();



--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
mr.DUDA
Дата 13.8.2003, 21:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 25
Всего: 232



А вот пример еще легче
Код

try
{
     CFile file("filename.txt", CFile::modeCreate | CFile::modeWrite);
     CArchive ar(&file, CArchive::store);
     CString str;    
     for(int i=0; i < myListBox.GetCount(); i++)
     {
           myListBox.GetText(i, str);
           ar<<str;
     }
}
catch(...)
{
     ::MessageBox(0, "Some file error", "Error", MB_OK);
}




--------------------
user posted image
PM MAIL WWW   Вверх
Step
Дата 14.8.2003, 09:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5151
Регистрация: 26.9.2002
Где: дурдом.UA

Репутация: 5
Всего: 25



Baa, хорошая подборка для факю получилась, вставляй...


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
Baa
Дата 19.8.2003, 15:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2639
Регистрация: 12.4.2002
Где: Москва

Репутация: 8
Всего: 12



Кстати говоря, мой пример работает в 10 раз быстрее остальных. Мне показалось, что это из-за перераспределения памяти у CString в цикле, добавил в своём примере, что строка создается аккурат по размеру итема, код стал тормозней, но по скорости все равно привосходит Step'ов пример в 5 раз, а пример mr.DUDA в 3 раза. Если нужна скорость, то MFC - Must Die smile.gif
WinApi записывает 10000 элеметов за 100-110 тиков.
Если не перераспределять память в цикле, то получается 30-40 тиков.
А Builder это делает за 80 тиков.


--------------------
"Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande
PM ICQ   Вверх
mr.DUDA
Дата 19.8.2003, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 25
Всего: 232



Baa, нет предела совершенству


--------------------
user posted image
PM MAIL WWW   Вверх
Step
Дата 21.8.2003, 09:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5151
Регистрация: 26.9.2002
Где: дурдом.UA

Репутация: 5
Всего: 25



Baa, MFC - Must Die, придется попробывать оптимизировать, дабы поднять мфц


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
mr.DUDA
Дата 21.8.2003, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 25
Всего: 232



Кто в здравом уме и твердой памяти будет оптимизировать по максимуму запись в файл из ListBox'а ?

Насчет тормознутости MFC согласен, только товарищи, не говорите про тормоза, компилируя и запуская прогу в Debug-конфигурации smile.gif (эй, не надо гнилых помидоров, я только на всякий случай сказал)...


--------------------
user posted image
PM MAIL WWW   Вверх
Baa
Дата 21.8.2003, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2639
Регистрация: 12.4.2002
Где: Москва

Репутация: 8
Всего: 12



Ща потестим её на PIV 2000
мда... результаты - бред...
109 294 260
медленнее, чем на моем третем пне...


--------------------
"Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande
PM ICQ   Вверх
DENNN
Дата 21.8.2003, 20:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 3878
Регистрация: 27.3.2002
Где: Москва

Репутация: 1
Всего: 43



ОС загружена по разному и в разных сервис-паках внутренний механизм для обмена сообщениями с контролами отличается
PM ICQ   Вверх
Baa
Дата 22.8.2003, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2639
Регистрация: 12.4.2002
Где: Москва

Репутация: 8
Всего: 12



ОСь загруженна по минимуму (обе), сервиспаки стоят одни и те же.


--------------------
"Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande
PM ICQ   Вверх
Закрытая темаСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0547 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.