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

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

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

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

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

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

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

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

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

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

58
2 / 2 / 0
Регистрация: 09.01.2013
Сообщений: 134
14.01.2013, 04:11  [ТС] 21
Author24 — интернет-сервис помощи студентам
еще один вопросик:

как записать свойство parent?

пишу так:
C++
1
Ini->WriteString("GroupBox",AnsiString("Parent")+AnsiString(i),KNOPKA[i]->Parent);
видает ошибки:
C++
1
2
[C++ Error] Unit1.cpp(1077): E2034 Cannot convert 'TWinControl * const' to 'AnsiString'
[C++ Error] Unit1.cpp(1077): E2342 Type mismatch in parameter 'Value' (wanted 'const AnsiString', got 'TWinControl *')
как исправить??
0
4043 / 2332 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
14.01.2013, 04:26 22
C++
1
KNOPKA[i]->Parent->Name
1
2 / 2 / 0
Регистрация: 09.01.2013
Сообщений: 134
14.01.2013, 05:20  [ТС] 23
блин. заработало но неправильно...
не записывает ето свойство всеравно!

C++
1
2
3
4
5
6
[number]
number=1
[GroupBox]
Parent1=
Left1=11
Top1=104...
может еще вариант есть?
просто если parent не указать то объект не пересоздастца правильно.
У меня
KNOPKA[i]->Parent=PageControl1->ActivePage;

Добавлено через 21 минуту
наверное все дело в том что PageControl1->ActivePage не имеет нормального имени!(
виводил KNOPKA[i]->Parent->Name в Edit->Text--- пусто.
0
4043 / 2332 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
14.01.2013, 14:34 24
C++
1
2
3
4
5
6
7
void __fastcall TForm1::btn1Click( TObject *Sender )
{
    TButton *bt = new TButton( this );
    bt->Parent = pgctrl1->ActivePage;
    bt->Caption = "new button";
    Caption = bt->Parent->Name;
}
Все арбайтен как положено. Выкладывай код...
Миниатюры
Сохранения результатов программы в файл  
0
2 / 2 / 0
Регистрация: 09.01.2013
Сообщений: 134
14.01.2013, 15:07  [ТС] 25
У вас тогда наверно новее версия с++ builder или что?,потому что я тоже самое пишу:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 KNOPKA[N] = new TGroupBox(Form1);
  
         
KNOPKA[N]->Parent = PageControl1->ActivePage;
              Edit8->Text=KNOPKA[N]->Parent->Name;
        if(top<400){
        KNOPKA[N]->Left = 11;
        KNOPKA[N]->Top = 4+N*100;}
        else{
         KNOPKA[N]->Left = 4+N*10;
        KNOPKA[N]->Top = 300;}
              KNOPKA[N]->ParentColor=false;
            KNOPKA[N]->Color=ColorBox1->Selected;
        KNOPKA[N]->Font->Color=clNavy;
        if(Form1->Edit2->Text.Length()>12){
         KNOPKA[N]->Width=140+2*Form1->Edit2->Text.Length();} //äîïðàöþâàòè(íå ïðàâåëüíà ôîðìóëà)
        else {KNOPKA[N]->Width=140;}
        KNOPKA[N]->Name=AnsiString("KNOPKA")+ AnsiString(N);
        KNOPKA[N]->Font->Size=14;
  KNOPKA[N]->Caption =Edit2->Text;
наверно в моей 6 версии Borland c++ ето не доработано.... какое ваше мнения?

Добавлено через 1 минуту
от того что заминил Form1 на this нічего не поменялось...

Добавлено через 2 минуты
Цитата Сообщение от BRcr Посмотреть сообщение
Caption = bt->Parent->Name;
Caption--простая переменная?
0
return (true);
1976 / 1111 / 221
Регистрация: 19.04.2011
Сообщений: 2,345
14.01.2013, 15:30 26
Цитата Сообщение от Best777 Посмотреть сообщение
наверно в моей 6 версии Borland c++ ето не доработано.... какое ваше мнения?
В моей 6 всё доработано
C++
1
2
3
4
    TButton *bt = new TButton( this );
    bt->Parent = Form1;
    bt->Caption = "new button";
    ShowMessage(bt->Parent->Name);
Показывает родителя как и положено - Form1
0
4043 / 2332 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
14.01.2013, 15:37 27
Caption эквивалентно this->Caption, то бишь это свойство формы в данном случае.

У меня XE.
Вероятно, глюк билдера какой-то... эти групбоксы хоть появляются на вкладке-то?
Еще можешь попробовать создать пустой проект и протестировать это поведение в нем...

Добавлено через 3 минуты
Где у тебя этот код выполняется?
0
2 / 2 / 0
Регистрация: 09.01.2013
Сообщений: 134
14.01.2013, 15:52  [ТС] 28
сори...
на чистом проекте етот код идет.
Я нашел ошибку: Когда названия стандартное(TabSheet[i]) тогда все норм. а у меня кнопкой можно свое названия записывать и тогда ничего не записуетса в ini файл и если просто вывести на Edit то тоже пусто!
как ето выправить если я хочу что б названия били написание на русском? (Получается что названия parent оно берет с TabSheet1->Caption) почему так?? спасибо что помогаете!!
меняю названия так:
C++
1
2
3
int j=PageControl1->ActivePageIndex+1;
  tab[j]->Caption="";
  tab[j]->Caption=AnsiString(Edit5->Text);
Добавлено через 4 минуты
BRcr Все показуется все работает, но не записывается parent в ini-файл.
Полюбом названия parent есть, потому что оно б так не создалось на вкладке.

Добавлено через 4 минуты
извини mimicria у меня проблема с PageControl1->ActivePage. если тебе не сложно можешь создать на форме
PageControl1 и на создавать там вкладок(правий клик->new page). Потом создать кнопку и туда запихнуть тот код что у меня више и Edit1 создать. Потом поменять названия вкладок на шото русское и вывести
Edit1->Text=KNOPKA[N]->Parent->Name;. пожалуйста...

Добавлено через 1 минуту
В Edit1 что то вывелось?
0
return (true);
1976 / 1111 / 221
Регистрация: 19.04.2011
Сообщений: 2,345
14.01.2013, 16:00 29
Да без разницы
C++
1
2
3
4
 TButton *bt = new TButton( this );
 bt->Parent = PageControl1->ActivePage;
 bt->Caption = "new button";
 ShowMessage(bt->Parent->Name);
Сохранения результатов программы в файл

А название Табшита меняете через Caption? Или таки Name ?
0
2 / 2 / 0
Регистрация: 09.01.2013
Сообщений: 134
14.01.2013, 16:03  [ТС] 30
Через Caption.
По любом глюк какой то...
0
return (true);
1976 / 1111 / 221
Регистрация: 19.04.2011
Сообщений: 2,345
14.01.2013, 16:06 31
Цитата Сообщение от Best777 Посмотреть сообщение
tab[j]->Caption=AnsiString(Edit5->Text);
А, табы тоже динамические? Как имена табам присваиваются?
0
4043 / 2332 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
14.01.2013, 16:09 32
Цитата Сообщение от mimicria Посмотреть сообщение
Как имена табам присваиваются?
Чувствую, что никак...
0
return (true);
1976 / 1111 / 221
Регистрация: 19.04.2011
Сообщений: 2,345
14.01.2013, 16:17 33
Цитата Сообщение от BRcr Посмотреть сообщение
Чувствую, что никак...
Это решило бы вопрос с пустотой в паренте, и это черт возьми работает
C++
1
2
3
4
5
 TTabSheet *mytab = new TTabSheet(PageControl1);
 mytab->Parent=PageControl1;
 mytab->PageControl=PageControl1;
// mytab->Name="MyTab"; // всё покажем и без name
 mytab->Caption="Тест";
0
2 / 2 / 0
Регистрация: 09.01.2013
Сообщений: 134
14.01.2013, 16:30  [ТС] 34
Присваиваю так:
C++
1
tab[np]->Name=AnsiString("Stor")+AnsiString(np);
шас допишу твои строчки...
0
return (true);
1976 / 1111 / 221
Регистрация: 19.04.2011
Сообщений: 2,345
14.01.2013, 16:38 35
Цитата Сообщение от Best777 Посмотреть сообщение
tab[np]->Name=AnsiString("Stor")+AnsiString(np);
Если уж на то пошло, то
C++
1
tab[np]->Name="Stor"+IntToStr(np);
0
2 / 2 / 0
Регистрация: 09.01.2013
Сообщений: 134
14.01.2013, 16:53  [ТС] 36
блин! перепутал формы вместо tab[np]->Parent=Form1->PageControl1 написано tab[np]->Parent=Form4->PageControl1
спасибо вам огромное!

Итак следующий вопрос от нуба в ini файлах:
я ище записую результати в файл. пишу так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
if (SaveDialog1->Execute()){
TIniFile *Ini = new TIniFile(SaveDialog1->FileName);
 
Ini->WriteInteger("number","number",N);//10 --ê³ëüê³ñòü
 
for(int i=1;i<=N;i++){
 
Ini->WriteString("GroupBox",AnsiString("Parent")+AnsiString(i),KNOPKA[i]->Parent->Name);//ошибка здесь
 
Ini->WriteInteger("GroupBox",AnsiString("Left")+AnsiString(i),KNOPKA[i]->Left);
Ini->WriteInteger("GroupBox",AnsiString("Top")+AnsiString(i),KNOPKA[i]->Top);
Ini->WriteInteger("GroupBox",AnsiString("Height")+AnsiString(i),KNOPKA[i]->Height);
Ini->WriteInteger("GroupBox",AnsiString("Width")+AnsiString(i),KNOPKA[i]->Width);
Ini->WriteString("GroupBox",AnsiString("Caption")+AnsiString(i),KNOPKA[i]->Caption);
Ini->WriteBool("GroupBox",AnsiString("ParentColor")+AnsiString(i),KNOPKA[i]->ParentColor);
Ini->WriteString("GroupBox",AnsiString("Color")+AnsiString(i),KNOPKA[i]->Color);
Ini->WriteString("GroupBox",AnsiString("FontColor")+AnsiString(i),KNOPKA[i]->Font->Color);
Ini->WriteString("GroupBox",AnsiString("Name")+AnsiString(i),KNOPKA[i]->Name);
 
delete KNOPKA[i];
}
delete Ini;
N=1;
Label1->Caption=SaveDialog1->FileName;
}
считую так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
if (OpenDialog1->Execute()){
TIniFile *Ini = new TIniFile(OpenDialog1->FileName);
 
int i=Ini->ReadInteger("number","number",0);
 
   for(int j=1;j<=i;j++){
   KNOPKA[j] = new TGroupBox(Form1);
 
 KNOPKA[j]->Parent->Name=Ini->ReadString("GroupBox",AnsiString("Parent")+AnsiString(j),"Form1");
 
      Edit8->Text=KNOPKA[j]->Parent->Name;
  //KNOPKA[j]->Name=Ini->ReadString("GroupBox",AnsiString("Name")+AnsiString(i),"none");
   //KNOPKA[j]->Left =Ini->ReadInteger("GroupBox",AnsiString("Left")+AnsiString(j),0);
   //KNOPKA[j]->Top = Ini->ReadInteger("GroupBox",AnsiString("Top")+AnsiString(j),0);;
 //  KNOPKA[j]->Caption=Ini->ReadString("GroupBox",AnsiString("Caption")+AnsiString(j),"íå íàéäåíî");;
 //  KNOPKA[j]->ParentColor=Ini->ReadBool("GroupBox",AnsiString("ParentColor")+AnsiString(j),true);
 
   }  } //  }
при записи ini файл виглядит так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
[number]
number=1
[GroupBox]
Parent1=Stor1
Left1=11
Top1=104
Height1=100
Width1=140
Caption1=вв
ParentColor1=0
Color1=255
FontColor1=8388608
Name1=KNOPKA1
вибивает ошибку сообщениям уже при роботе програмы что :
Миниатюры
Сохранения результатов программы в файл  
0
2 / 2 / 0
Регистрация: 09.01.2013
Сообщений: 134
14.01.2013, 16:56  [ТС] 37
если там где загружает написать статическое parent то работает без ошибки.
может не правильно записал parent или Stor1 оно почему то не видит...
подскажите пожалуйста.
0
return (true);
1976 / 1111 / 221
Регистрация: 19.04.2011
Сообщений: 2,345
14.01.2013, 16:57 38
Цитата Сообщение от Best777 Посмотреть сообщение
for(int j=1;j<=i;j++)
Индексы массива от 1 до 10, а массив как объявлен? Про нумерацию с 0 не забыли?
0
2 / 2 / 0
Регистрация: 09.01.2013
Сообщений: 134
14.01.2013, 17:04  [ТС] 39
Stor[i]--так и осталась caption в Tabsheet...

Добавлено через 2 минуты
TGroupBox *KNOPKA[30];
но у меня N стартует при создавании с 1

Добавлено через 4 минуты
ради интереса пробивал считать без цикла. та самая ошибка. значит тепер уже не правильно считую свое названия вкладки как parent KNOPKA[i];
0
return (true);
1976 / 1111 / 221
Регистрация: 19.04.2011
Сообщений: 2,345
14.01.2013, 17:19 40
Конечно неправильно. В файл пишется Parent->Name - это только строка с именем.
А при загрузке Component->Parent требует не строку, а полноценный TWinControl
0
14.01.2013, 17:19
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.01.2013, 17:19
Помогаю со студенческими работами здесь

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

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

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

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

ClientDataSet закрытие приложения без сохранения результатов
Открываю приложение, работаю с ClientDataSet - и возникает желание выйти из программы без...

Какую структуру использовать для сохранения результатов?
Требуется написать программу для расчета механических конструкций, результаты которого будут...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru