Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.87/30: Рейтинг темы: голосов - 30, средняя оценка - 4.87
2 / 2 / 0
Регистрация: 09.01.2013
Сообщений: 134

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

09.01.2013, 19:01. Показов 6534. Ответов 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
Ответ Создать тему
Новые блоги и статьи
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы Всем привет! Хочу поделиться свежим (и довольно. . .
Где деньги лежат
kumehtar 02.07.2026
Это - японская подводная лодка I-52 (тип C2, кодовое имя Momi) вышла из Японии в марте 1944 года с миссией в оккупированную немцами Францию (Лорьян). Это была одна из «Янаги»-миссий по обмену. . .
Krabik для WoW 3.3.5a, многоязычный
AmbA 02.07.2026
Допилил бота, думаю что окончательно. Изменения: - добавлена многоязычность - добавлено снятие скриншотов - добавлено поддержание бафов хождения по воде (для жреца, дк и шамана) - и так, по. . .
Алиса нашла кучу ошибок компиляции и запуска в проекте, который без проблем компилировался и запускался)))
anaschu 30.06.2026
Я пока посмеюся, но завтра проверю. А вообще интерсно. Дал алисе файл, в котором точно нет ошибок компиляции и запуска, и попросил их найти. Нашла кучу))) Критические ошибки, мешающие компиляции и. . .
сукцессия 16. Общий обзор, в основном что бы другие ии поняли
anaschu 29.06.2026
# Передаточный документ: модель микоризной сукцессии (для нового чата) Этот документ предназначен для того, чтобы новый чат Claude мог продолжить работу без необходимости заново разбираться в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru