Помощник
Здравствуйте, гость ( Вход | Регистрация )
|
|
23:04:2008, 17:47
|
|
Новенький ![]() Группа: Новенький Сообщений: 11 Регистрация: 5:03:2008 Из: Киев Пользователь №: 15 681 Репутация: 0
|
Здравствуйте, уважаемые господа!
Прежде всего хочу выразить всем огромную благодарность за оказанную мне, как новичку, помощь! За время пребывания на форуме я у вас много чему научился, но "текущую" проблему решить не могу Вобщем мне нужно предоставить пользователю возможность выбора в программе некоторой стандартной продукции (к примеру, силовые электрические кабеля) программа должна "знать" их маркировку, технические характеристики и т.д. (двумерная таблица с несколькими столбцами). Когда я "писал" на VB, я просто "забивал" все в текстовые документы и потом, при запуске, программа считывала данные из этих файлов и "фасовала" их по соответствующим массивам. Подскажите пожалуйста как разрешить эту проблему в MFC. Заранее благодарен! |
|
Сообщение
#1
|
|
![]() |
|
|
23:04:2008, 17:53
|
|
============== ![]() ![]() ![]() ![]() ![]() Группа: Модеры Сообщений: 2 064 Регистрация: 11:01:2007 Пользователь №: 8 750 Репутация: 28
|
|
|
Сообщение
#2
|
|
|
|
23:04:2008, 18:40
|
|
Новенький ![]() Группа: Новенький Сообщений: 11 Регистрация: 5:03:2008 Из: Киев Пользователь №: 15 681 Репутация: 0
|
это очень плохо, так-как на изучение XML у меня просто не хватит времени...
|
|
Сообщение
#3
|
|
|
|
23:04:2008, 20:55
|
|
Гуру ![]() ![]() ![]() Группа: Достойный программист Сообщений: 316 Регистрация: 3:11:2007 Пользователь №: 13 517 Репутация: 1
|
а почему аналогичный подход, описанный для бейсика не подходит для С++?
|
|
Сообщение
#4
|
|
|
|
24:04:2008, 15:58
|
|
Новенький ![]() Группа: Новенький Сообщений: 11 Регистрация: 5:03:2008 Из: Киев Пользователь №: 15 681 Репутация: 0
|
программа (пишет/читает) свои собственные документы посредством сериализации. файлы ж этой "базы данных" должны иметь иную структуру. возможно ли их сериализировать и как - я не знаю. в бейсике эти данные я писал в блокноте, а программа их читала в формате String (по-моему ф-ция ReadLine). как это сделать в MFC я, увы, тож не знаю
|
|
Сообщение
#5
|
|
|
|
25:04:2008, 06:39
|
|
Божественный ![]() ![]() ![]() ![]() ![]() Группа: Модеры Сообщений: 1 937 Регистрация: 4:09:2006 Из: Минск Пользователь №: 6 316 Репутация: 32
|
|
|
Сообщение
#6
|
|
|
|
25:04:2008, 13:44
|
|
Новенький ![]() Группа: Новенький Сообщений: 11 Регистрация: 5:03:2008 Из: Киев Пользователь №: 15 681 Репутация: 0
|
в этих файлах должны быть данные о продукции. покажу пример на тех же силовых кабелях:
марка кабеля: ААшВ; номинальное сечение= 35; придельный ток= 200; удельное электрическое сопротивление=0,035; ... цена=5200. Программа должна предоставить пользователю выбрать марку кабеля, например, из списка, а остальные характеристики "подтянуть" для дальнейших расчетов. мне нужно узнать как можно читать ети данные из файлов и в какие файлы их лучше набрать. Сериализация здесь, по-моему, не подойдет, т.к. она записывает и востанавливает из файла данные-члены классов, объявленых в программе. Спасибо |
|
Сообщение
#7
|
|
|
|
25:04:2008, 13:55
|
|
Божественный ![]() ![]() ![]() ![]() ![]() Группа: Модеры Сообщений: 1 937 Регистрация: 4:09:2006 Из: Минск Пользователь №: 6 316 Репутация: 32
|
в этих файлах должны быть данные о продукции. покажу пример на тех же силовых кабелях: марка кабеля: ААшВ; номинальное сечение= 35; придельный ток= 200; удельное электрическое сопротивление=0,035; ... цена=5200. Это лежит в текстовом файле в таком виде? Мда... Глупее идею сложно придумать. Сериализация здесь, по-моему, не подойдет, т.к. она записывает и востанавливает из файла данные-члены классов, объявленых в программе. Что Вам мешает открыть файл и напрямую читать из него данные? |
|
Сообщение
#8
|
|
|
|
25:04:2008, 15:08
|
|
Новенький ![]() Группа: Новенький Сообщений: 11 Регистрация: 5:03:2008 Из: Киев Пользователь №: 15 681 Репутация: 0
|
практически (только цифры)... согласен, что глупо, но тогда ничего другог в голову не пришло.
Цитата Что Вам мешает открыть файл и напрямую читать из него данные? Во первых, я не знаю как сохранить данные в таком файле (грубо говоря, куда это все набирать, если не в блокнот |
|
Сообщение
#9
|
|
|
|
25:04:2008, 15:46
|
|
============== ![]() ![]() ![]() ![]() ![]() Группа: Модеры Сообщений: 2 064 Регистрация: 11:01:2007 Пользователь №: 8 750 Репутация: 28
|
см. XML
|
|
Сообщение
#10
|
|
|
|
26:04:2008, 17:12
|
|
Гуру ![]() ![]() ![]() Группа: Достойный программист Сообщений: 316 Регистрация: 3:11:2007 Пользователь №: 13 517 Репутация: 1
|
|
|
Сообщение
#11
|
|
|
|
28:04:2008, 07:33
|
|
Божественный ![]() ![]() ![]() ![]() ![]() Группа: Модеры Сообщений: 1 937 Регистрация: 4:09:2006 Из: Минск Пользователь №: 6 316 Репутация: 32
|
|
|
Сообщение
#12
|
|
|
|
6:05:2008, 17:54
|
|
Новенький ![]() Группа: Новенький Сообщений: 8 Регистрация: 5:05:2008 Пользователь №: 17 086 Репутация: 0
|
Делаешь текстовый файл bd.txt с таким содержимым
Код ААшВ 35 200 0.035 5200 ББвШ 40 200 0.055 5999 читаешь его используя fstream Например вот одна функция которой я читаю данные из текстового файла состоящего из двух столбцов Код int vectors::set_vec_geolvert ( std::vector<data_geolvert>& mrvec_geolvert, int& ri_verbose ) { try { ifstream fi_geolvert ( F_GEOLVERT, C_IOS_IN | C_IOS_NOCREATE ); if ( !fi_geolvert ) { cout << "File " << F_GEOLVERT << " not found or such directory not created." << endl; throw vectors::ex_error(); } mrvec_geolvert.clear(); char c_strtemp[128]; int i_num_tip_str = 0; int i_nazv_ige = 0; double d_otm_podoshvi_ige = 0.0; bool b_its_geolvert; data_geolvert Data_geolvert; data_geolvert_ige Data_geolvert_ige; b_its_geolvert = false; while (!fi_geolvert.eof () ) { fi_geolvert >> c_strtemp; if (fi_geolvert.eof () ) break; if (c_strtemp[0] == '{') { b_its_geolvert = true; i_num_tip_str++; continue; } if (c_strtemp[0] == '}') { b_its_geolvert = false; continue; } if (b_its_geolvert) { i_nazv_ige = atoi (c_strtemp); fi_geolvert >> d_otm_podoshvi_ige; if (fi_geolvert.eof () ) { cout << "ERROR: in file " << F_GEOLVERT << endl; throw vectors::ex_error (); } Data_geolvert_ige.set_num_ige ( i_nazv_ige ); Data_geolvert_ige.set_otm_podoshvi_ige ( d_otm_podoshvi_ige ); Data_geolvert.set_num_tip_str ( i_num_tip_str ); Data_geolvert.getr_geolvert_ige ().push_back ( Data_geolvert_ige ); mrvec_geolvert.push_back(Data_geolvert); } } } catch (vectors::ex_error) { return 1; } return 0; } а пишу в файл например так Код // печать вектора показателей потери несущей способности сваи в файл F_STNLOSS
int vectors::print_vec_stnloss (data_vecs& rvecs) { try { int i_cycle1; ofstream fo_stnloss (F_STNLOSS, ios::out); if (!fo_stnloss) { cout << "ERROR: Can't open file " << F_STNLOSS << endl; throw vectors::ex_error (); } for (i_cycle1 = 0; i_cycle1 < (int) rvecs.mvec_stnloss.size (); i_cycle1++) { fo_stnloss << rvecs.mvec_stnloss[i_cycle1].get_num_fe () << "\t" << rvecs.mvec_stnloss[i_cycle1].get_stnloss () << endl; } fo_stnloss.close (); } catch (vectors::ex_error) {return 1;} return 0; } |
|
Сообщение
#13
|
|
|
|
8:05:2008, 11:59
|
|
Новенький ![]() Группа: Программист Сообщений: 61 Регистрация: 27:12:2007 Пользователь №: 14 492 Репутация: 0
|
для alexroot: да вы просто маньяк)
Цитата for (i_cycle1 = 0; i_cycle1 < (int) rvecs.mvec_stnloss.size (); i_cycle1++) PS: Цитата Тут только XML спасает. шутник))
Сообщение отредактировал Dimmuborgir - 8:05:2008, 12:03 |
|
Сообщение
#14
|
|
|
|
8:05:2008, 18:57
|
|
============== ![]() ![]() ![]() ![]() ![]() Группа: Модеры Сообщений: 2 064 Регистрация: 11:01:2007 Пользователь №: 8 750 Репутация: 28
|
|
|
Сообщение
#15
|
|
|
|
12:05:2008, 15:38
|
|
Новенький ![]() Группа: Новенький Сообщений: 8 Регистрация: 5:05:2008 Пользователь №: 17 086 Репутация: 0
|
для alexroot: да вы просто маньяк) Код for (i_cycle1 = 0; i_cycle1 < (int) rvecs.mvec_stnloss.size (); i_cycle1++) Самоучка Если что не так - пишите. Не вижу ничего крамольного в выделенной выше строке кода Но мой пример, видимо, должен работать и для МFC приложения, достаточно включить fstream. Когдато я писал и с интерфейсом используя MFC, и пользовался именно библиотекой fstream. Все прекрасно работало. Но у меня нет столько времени для картинок, поэтому пока пишу только консольные приложения, которые больше приносят пользы чем GUI MFC |
|
Сообщение
#16
|
|
|
|
14:05:2008, 13:52
|
|
Новенький ![]() Группа: Программист Сообщений: 61 Регистрация: 27:12:2007 Пользователь №: 14 492 Репутация: 0
|
для sax_ol: если честно, мне по работе не приходилось встречать больших объемов данных. Все задачи с которыми я на данный момент сталкивался (в области энергетики) решались очень легко с помощью простых текстовых файлов. Иногда еще бинарных. )
для alexroot: я имел ввиду длинное название переменных цикла, кои зачасту применяются многократно внутри последнего. может дело вкуса конечно) копипаст всегда поможет.) |
|
Сообщение
#17
|
|
![]() |
|
Текстовая версия | Сейчас: 5:09:2008 - 06:42 |