2 / 2 / 0
Регистрация: 09.01.2013
Сообщений: 134

Сохранения результатов программы в файл

09.01.2013, 19:01. Показов 6745. Ответов 58
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здраствуйте всем.

Создаю программу "Среда для создания экспертных систем" на c++ Builder 6. Вопросы создаются как названия в GroupBox-сах а варианты как CheckButton или RadioButton внутри этих GroupBox-сов. Понятно что они создаются динамически.

Нужно чтоб когда нажата кнопка Сохранить все даные сохранялись в файл например txt(Вам знать какой лучше).
И после того как программа перезапускалась и нажата кнопка Загрузить все какбы Я думаю пересоздавались у цыкле снова на форму. Как это лучше зделать??? Помогите пожалуйста. Если можно какие та наброски(программы),
Или просто на словах с чего начать. Буду очень благодарен.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.01.2013, 19:01
Ответы с готовыми решениями:

Запись результатов программы в текстовый файл
Я создал прожку, нужно, что б результат записался в файл формата .txt а также выводился на экран. С последним нету проблем, а вот с файлом...

Вывод результатов выполнения программы в текстовый файл
Ребята, написал программу по поиску простых чисел в заданном диапазоне, решил результат выполнения этой программы, то есть все простые...

Работа с файлами: вывод-ввод результатов программы в текстовый файл
#include<iostream> #include<cstdlib> #include<ctime> using namespace std; int main() { setlocale(0, "rus"); cout <<...

58
2 / 2 / 0
Регистрация: 09.01.2013
Сообщений: 134
14.01.2013, 17:29  [ТС]
Студворк — интернет-сервис помощи студентам
а можно ка кто записать полноценный TWinControl в ini файл и его считать? или с строки имени через переменную вытянуть его а потом и в parent бросить? большое спасибо что помогаете!!!

Добавлено через 6 минут
Цитата Сообщение от mimicria Посмотреть сообщение
А при загрузке Component->Parent требует не строку, а полноценный TWinControl
как записать в ini-файл и потом правильно считать? спасибо что помогаете!!!))
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
14.01.2013, 19:02
C++
1
2
3
String parent = "Parent" + IntToStr( j );
if ( ! KNOPKA[j]->Parent = ( TTabSheet *) FindComponent( Ini->ReadString( "GroupBox", parent, "" ) ) ) 
    ShowMessage( "Не найден компонент \"" + parent + "\"" );
Это в расчете на то, что форма владеет всеми TabSheet...
FindComponent
0
2 / 2 / 0
Регистрация: 09.01.2013
Сообщений: 134
14.01.2013, 19:22  [ТС]
та самая ошибка.
И чтоб ето мне дала?
типа у else написал бы уже присваивания?

Добавлено через 3 минуты
Цитата Сообщение от mimicria Посмотреть сообщение
Конечно неправильно. В файл пишется Parent->Name - это только строка с именем.
А при загрузке Component->Parent требует не строку, а полноценный TWinControl
А Вы нащет этого что можете сказать?
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
14.01.2013, 19:29
Цитата Сообщение от Best777 Посмотреть сообщение
та самая ошибка.
И чтоб ето мне дала?
типа у else написал бы уже присваивания?
"Тех самых" ошибок у тебя мильён может быть, конкретней давай.
Присваивание идет прямо в условии if...
0
2 / 2 / 0
Регистрация: 09.01.2013
Сообщений: 134
14.01.2013, 19:37  [ТС]
Цитата Сообщение от BRcr Посмотреть сообщение
2
3
String parent = "Parent" + IntToStr( j );
if ( ! KNOPKA[j]->Parent = ( TTabSheet *) FindComponent( Ini->ReadString( "GroupBox", parent, "" ) ) )
* * ShowMessage( "Не найден компонент \"" + parent + "\"" );
а разве можно ище не созданий объект проверять на логическое не равно?
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
14.01.2013, 19:47
Никаких несозданных объектов тут не наблюдаю. Логического "не равно" тут тоже нет.
А есть проверка указателя, возвращаемого методом FindComponent(), на равенство нулю - если результатом работы данного метода будет NULL, сработает условие if.
Напрягись ты уже!
0
return (true);
 Аватар для mimicria
1977 / 1112 / 221
Регистрация: 19.04.2011
Сообщений: 2,346
14.01.2013, 19:50
Цитата Сообщение от Best777 Посмотреть сообщение
А Вы нащет этого что можете сказать?
А то же самое, найти компонент родителя по названию с помощью FindComponent, а результат присвоить паренту, только я бы наверное поостерегся так приводить к TTabSheet
0
2 / 2 / 0
Регистрация: 09.01.2013
Сообщений: 134
14.01.2013, 19:56  [ТС]
огого! Профессиональность....
Но у меня ошибку видает когда дословно написано.
такую:
C++
1
[C++ Error] Unit1.cpp(1111): E2277 Lvalue required
думал ета что у вас другой с++
написал так
C++
1
2
if (  KNOPKA[j]->Parent != ( TTabSheet *) FindComponent( Ini->ReadString( "GroupBox", parent, "" ) ) )
    {ShowMessage( "Íå íàéäåí êîìïîíåíò \"" + parent + "\"" ); }
работает но ничего не показывает....
В чем причина может быть? извините что так туплю!(

Добавлено через 3 минуты
Цитата Сообщение от mimicria Посмотреть сообщение
олько я бы наверное поостерегся так приводить к TTabSheet
почему?
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
14.01.2013, 19:57
Пару скобок добавь:
C++
1
if ( ! ( KNOPKA[j]->Parent = ( TTabSheet *) FindComponent( Ini->ReadString( "GroupBox", parent, "" ) ) ) )
Любую белиберду с форума надо уметь доводить до ума по ошибкам...
Цитата Сообщение от mimicria Посмотреть сообщение
я бы наверное поостерегся так приводить к TTabSheet
Я бы, наверно, тоже... проверочку сделал бы, наверно.
1
2 / 2 / 0
Регистрация: 09.01.2013
Сообщений: 134
14.01.2013, 20:04  [ТС]
Господа!
две скобки = 3 ошибки:

C++
1
2
3
4
5
[C++ Error] Unit1.cpp(1111): E2492 Properties may only be assigned using a simple statement, e.g. "prop = value;"
 
[C++ Warning] Unit1.cpp(1111): W8060 Possibly incorrect assignment
 
[C++ Error] Unit1.cpp(1111): E2369 Cannot use the result of a property assignment as an rvalue
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
14.01.2013, 20:15
Тьфу, блин! Это ж свойство, будь оно неладно! Переборщил с компактизацией...
C++
1
2
3
4
String parent = "Parent" + IntToStr( j );
KNOPKA[j]->Parent = ( TTabSheet *) FindComponent( Ini->ReadString( "GroupBox", parent, "" ) );
if ( ! KNOPKA[j]->Parent ) 
    ShowMessage( "Не найден компонент \"" + parent + "\"" );
0
2 / 2 / 0
Регистрация: 09.01.2013
Сообщений: 134
14.01.2013, 22:57  [ТС]
Ничего не находит.

Добавлено через 2 часа 27 минут
если проверить так:
C++
1
2
if(KNOPKA[j]->Parent == ( TTabSheet *) FindComponent( Ini->ReadString( "GroupBox", parent, "" ) ))
 {Edit8->Text="ццц"; }
то текст виводитса. Значитьоно совпадает. но когда написал как Вы посоветували:
C++
1
2
3
4
String parent = "Parent" + IntToStr( j );
KNOPKA[j]->Parent = ( TTabSheet *) FindComponent( Ini->ReadString( "GroupBox", parent, "" ) );
if ( ! KNOPKA[j]->Parent ) 
    ShowMessage( "Не найден компонент \"" + parent + "\"" );
то выводит столько сообщений(не найдено...) сколько и в ini файле елементов.
Что на етот раз я зделал не так? подскажите...
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
14.01.2013, 22:59
C++
1
2
3
4
5
6
7
8
void __fastcall TForm1::Button2Click(TObject *Sender)
{
   AnsiString PP = KNOPKA1->Parent->Parent->Name ;
   mIni->WriteString("GroupBox","Parent1", PP);
/*  result:
 [GroupBox]
 Parent1=Form1   */
}
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
14.01.2013, 23:21
А листы tabsheet на этот момент уже созданы? И имена у них у всех как на момент записи настроек в файл?
0
2 / 2 / 0
Регистрация: 09.01.2013
Сообщений: 134
14.01.2013, 23:31  [ТС]
Да! У вас работает Ваш код?

Добавлено через 1 минуту
nick42 , мне нужно чтоб parent был активная вкладка на PageControl

Добавлено через 1 минуту
*не активная, а где он создан...
0
return (true);
 Аватар для mimicria
1977 / 1112 / 221
Регистрация: 19.04.2011
Сообщений: 2,346
15.01.2013, 10:12
Аккумулирую результаты.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 AnsiString papa="TabSheet2"; 
// Неважно, как мы тут для примера получили название родителя,
// главное, что это строка. В вашем случае эта строка считана 
// из ini-файла функцией ReadString
 TButton *bt = new TButton(this);
// Создаём нужный компонент, здесь для примера кнопку
 bt->Caption = "new button";
 bt->Parent = dynamic_cast<TTabSheet*>(FindComponent(papa));
// С помощью FindComponent ищем соответствующий считанному названию компонент,
// преобразуем его к тому типу, которому он соответствует, в данном случае
// вкладке TTabSheet и присваиваем полученный результат паренту.
// Обращаю внимание на то, что соответствующий родитель, т.е. PageControl 
// с соответствующими вкладками с НУЖНЫМИ названиями УЖЕ ДОЛЖЕН БЫТЬ СОЗДАН
 if (bt->Parent) ShowMessage(bt->Parent->Name);
// Проверили, что результат не NULL и вывели сообщение о родителе.
// В моём проверочном случае всё работает
1
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
15.01.2013, 13:44
Best777, еще раз повторно акцентирую внимание на том, что владельцем(Owner) вкладок tabsheet должна быть форма, а не pagecontrol. В противном случае надо искать так: pagecontrol->FindComponent( papa ).
1
2 / 2 / 0
Регистрация: 09.01.2013
Сообщений: 134
15.01.2013, 14:34  [ТС]
:yaho o::ya hoo::

Четко работает)). только почему создателям с++ захотелось чтоб parent только как полноценная строка TWinControl можно было задавать а не можно было на слово записывать(типа нету такого обєкта то ошибка) плохо что нету конвектора такого( я б дал иму названия: AnsiStringToObjectTWiControl)
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
15.01.2013, 14:42
Скажи лучше - плохо, что нет волшебника, чтоб по щелчку пальцев мне любую программу сам писал... мечта миллионов.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.01.2013, 14:42

Запись результатов работы программы в файл
как сделать чтобы результат записывался в файл? Program writefile; var x,y:real; st:string; f:text; begin assign(f,'xxx.txt'); ...

Вывод результатов работы программы в файл
добрый день. опыт не большой в работе с Паскалем. есть исходный код программы. проблема вот в чем, какие значения вводить, и как сделать...

Создать файл для результатов работы программы
Для записи результатов работы программы необходимо создать файл. В ходе работы программа будет постоянно обращаться к этому файлу : брать...

Осуществление сохранения пройденного времени, в память программы или в шифрованный файл
Товарищи помогите осуществить &quot;лицензию&quot; программы, что бы при использовании/ не использовании программы отсчет времени продолжал бы идти....

Выполнение одной программы несколько раз и запись результатов в файл
Всем привет! Собственно вот такая проблема возникла. Есть txt файл. На каждой строчке url. Есть программа которая эти url обрабатывать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
59
Ответ Создать тему
Опции темы

Новые блоги и статьи
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru