Ошибка при компиляции (project1.exe raised exception class)
17.03.2015, 13:50. Показов 801. Ответов 0
Здравствуйте, у меня все было с программой отлично и все работало но после того ка кдобавил несколько строчек сразу компилятор выдал ошибку "project1.exe raised exception class....."
в общем вот фрагмент кода программы:
| 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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
| //---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "IniFiles.hpp"
#include <fstream.h>
#include "Unit1.h"
#include "Unit2.h"
#include "Unit3.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
AnsiString name;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
AnsiString XOR_Crypt(AnsiString in, AnsiString pass)
{
AnsiString out;
for (int x=1;x<in.Length()+1;x++)
{
out += (char)(in[x] ^ pass[x%pass.Length()+1]);
}
return out;
}
//---------------------------------------------------------------------------
void ini_save(void)
{
AnsiString Patch;
Patch = ExtractFilePath(ParamStr(0));
TIniFile *Ini = new TIniFile(Patch+name+".ini");
Ini->WriteString ( "Form1", "Form1",Form1->Caption);
Ini->WriteString ("Label","Label1",Form1->Label1->Caption);
Ini->WriteString ("Label","Label2",Form1->Label2->Caption);
Ini->WriteString ("Label","Label4",Form1->Label4->Caption);
Ini->WriteString ("Label","Label5",Form1->Label5->Caption);
Ini->WriteString ("Label","Label8",Form1->Label8->Caption);
Ini->WriteInteger ("PositionLabel","Label4",Form1->Label4->Left);
Ini->WriteInteger ("PositionLabel","Label8",Form1->Label8->Left);
Ini->WriteInteger ("PositionLabel","Label2",Form1->Label2->Left);
Ini->WriteString ("Edit","Edit1",Form1->Edit1->Text);
//Ini->WriteBool ("RadioButton","RadioButton1",Form1->RadioButton1->Checked);
//Ini->WriteBool ("RadioButton","RadioButton2",Form1->RadioButton2->Checked);
Ini->WriteString ("F2Label","Label1",Form2->Label1->Caption);
Ini->WriteString ("F2Label","Label2",Form2->Label2->Caption);
Ini->WriteString ("F2Label","Label3",Form2->Label3->Caption);
Ini->WriteString ("F2Label","Label4",Form2->Label4->Caption);
Ini->WriteString ("F2Label","Label9",Form2->Label9->Caption);
Ini->WriteString ("F2CheckBox","CheckBox1",Form2->CheckBox1->Caption);
}
//---------------------------------------------------------------------------
void ini_load(void)
{
AnsiString Patch;
Patch = ExtractFilePath(ParamStr(0));
TIniFile *Ini = new TIniFile(Patch+name+".ini");
Form1->Label1->Caption = Ini->ReadString("Label","Label1",Form1->Label1->Caption);
Form1->Label2->Caption = Ini->ReadString("Label","Label2",Form1->Label2->Caption);
Form1->Label4->Caption = Ini->ReadString("Label","Label4",Form1->Label4->Caption);
Form1->Label5->Caption = Ini->ReadString("Label","Label5",Form1->Label5->Caption);
Form1->Label8->Caption = Ini->ReadString("Label","Label8",Form1->Label8->Caption);
Form1->Edit1->Text = Ini->ReadString("Edit","Edit1",Form1->Edit1->Text);
Form1->Label4->Left = Ini->ReadInteger("PositionLabel","Label4",Form1->Label4->Left);
Form1->Label8->Left = Ini->ReadInteger("PositionLabel","Label8",Form1->Label8->Left);
Form1->Label2->Left = Ini->ReadInteger("PositionLabel","Label2",Form1->Label2->Left);
//Form1->RadioButton1->Checked = Ini->ReadBool ("RadioButton","RadioButton1",Form1->RadioButton1->Checked);
//Form1->RadioButton2->Checked = Ini->ReadBool ("RadioButton","RadioButton2",Form1->RadioButton2->Checked);
Form2->Label1->Caption = Ini->ReadString("F2Label","Label1",Form2->Label1->Caption);
Form2->Label2->Caption = Ini->ReadString("F2Label","Label2",Form2->Label2->Caption);
Form2->Label3->Caption = Ini->ReadString("F2Label","Label3",Form2->Label3->Caption);
Form2->Label4->Caption = Ini->ReadString("F2Label","Label4",Form2->Label4->Caption);
Form2->Label9->Caption = Ini->ReadString("F2Label","Label9",Form2->Label9->Caption);
Form2->CheckBox1->Caption = Ini->ReadString ("F2CheckBox","CheckBox1",Form2->CheckBox1->Caption);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Edit1Click(TObject *Sender)
{
Edit1->Text="";
}
//--------------------------------------------------------------------------- |
|
все работало , но после добавления строк
| C++ | 1
2
3
4
5
6
| Form2->Label1->Caption = Ini->ReadString("F2Label","Label1",Form2->Label1->Caption);
Form2->Label2->Caption = Ini->ReadString("F2Label","Label2",Form2->Label2->Caption);
Form2->Label3->Caption = Ini->ReadString("F2Label","Label3",Form2->Label3->Caption);
Form2->Label4->Caption = Ini->ReadString("F2Label","Label4",Form2->Label4->Caption);
Form2->Label9->Caption = Ini->ReadString("F2Label","Label9",Form2->Label9->Caption);
Form2->CheckBox1->Caption = Ini->ReadString ("F2CheckBox","CheckBox1",Form2->CheckBox1->Caption); |
|
выдает ошибку "project project1.exe raised exception class...", и указывает на начало этого кода..
Вроде все записывает в Ini файл но почему не считает ...мб потому что форма не открыта? или что
Добавлено через 5 минут
Сам спросил сам и ответил, тут из-за формы т.к она скрыта программа не может что либо изменить ...
p.s только что попробовал..
Можно ли как то обойти это?
Без отображения Form2?
Добавлено через 14 минут
Мда, в общем нашел такое решение
Form1
| 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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
| //---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "IniFiles.hpp"
#include <fstream.h>
#include "Unit1.h"
#include "Unit2.h"
#include "Unit3.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
AnsiString name;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
AnsiString XOR_Crypt(AnsiString in, AnsiString pass)
{
AnsiString out;
for (int x=1;x<in.Length()+1;x++)
{
out += (char)(in[x] ^ pass[x%pass.Length()+1]);
}
return out;
}
//---------------------------------------------------------------------------
void ini_save(void)
{
AnsiString Patch;
Patch = ExtractFilePath(ParamStr(0));
TIniFile *Ini = new TIniFile(Patch+name+".ini");
Ini->WriteString ( "Form1", "Form1",Form1->Caption);
Ini->WriteString ("Label","Label1",Form1->Label1->Caption);
Ini->WriteString ("Label","Label2",Form1->Label2->Caption);
Ini->WriteString ("Label","Label4",Form1->Label4->Caption);
Ini->WriteString ("Label","Label5",Form1->Label5->Caption);
Ini->WriteString ("Label","Label8",Form1->Label8->Caption);
Ini->WriteInteger ("PositionLabel","Label4",Form1->Label4->Left);
Ini->WriteInteger ("PositionLabel","Label8",Form1->Label8->Left);
Ini->WriteInteger ("PositionLabel","Label2",Form1->Label2->Left);
Ini->WriteString ("Edit","Edit1",Form1->Edit1->Text);
//Ini->WriteBool ("RadioButton","RadioButton1",Form1->RadioButton1->Checked);
//Ini->WriteBool ("RadioButton","RadioButton2",Form1->RadioButton2->Checked);
Ini->WriteString ("F2Label","Label1",Form2->Label1->Caption);
Ini->WriteString ("F2Label","Label2",Form2->Label2->Caption);
Ini->WriteString ("F2Label","Label3",Form2->Label3->Caption);
Ini->WriteString ("F2Label","Label4",Form2->Label4->Caption);
Ini->WriteString ("F2Label","Label9",Form2->Label9->Caption);
Ini->WriteString ("F2CheckBox","CheckBox1",Form2->CheckBox1->Caption);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ini_load(void)
{
AnsiString Patch;
Patch = ExtractFilePath(ParamStr(0));
TIniFile *Ini = new TIniFile(Patch+name+".ini");
Form1->Label1->Caption = Ini->ReadString("Label","Label1",Form1->Label1->Caption);
Form1->Label2->Caption = Ini->ReadString("Label","Label2",Form1->Label2->Caption);
Form1->Label4->Caption = Ini->ReadString("Label","Label4",Form1->Label4->Caption);
Form1->Label5->Caption = Ini->ReadString("Label","Label5",Form1->Label5->Caption);
Form1->Label8->Caption = Ini->ReadString("Label","Label8",Form1->Label8->Caption);
Form1->Edit1->Text = Ini->ReadString("Edit","Edit1",Form1->Edit1->Text);
Form1->Label4->Left = Ini->ReadInteger("PositionLabel","Label4",Form1->Label4->Left);
Form1->Label8->Left = Ini->ReadInteger("PositionLabel","Label8",Form1->Label8->Left);
Form1->Label2->Left = Ini->ReadInteger("PositionLabel","Label2",Form1->Label2->Left);
//Form1->RadioButton1->Checked = Ini->ReadBool ("RadioButton","RadioButton1",Form1->RadioButton1->Checked);
//Form1->RadioButton2->Checked = Ini->ReadBool ("RadioButton","RadioButton2",Form1->RadioButton2->Checked);
if(Form2 == NULL)
{
}
else
{
Form2->Label1->Caption = Ini->ReadString("F2Label","Label1",Form2->Label1->Caption);
Form2->Label2->Caption = Ini->ReadString("F2Label","Label2",Form2->Label2->Caption);
Form2->Label3->Caption = Ini->ReadString("F2Label","Label3",Form2->Label3->Caption);
Form2->Label4->Caption = Ini->ReadString("F2Label","Label4",Form2->Label4->Caption);
Form2->Label9->Caption = Ini->ReadString("F2Label","Label9",Form2->Label9->Caption);
Form2->CheckBox1->Caption = Ini->ReadString ("F2CheckBox","CheckBox1",Form2->CheckBox1->Caption);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Edit1Click(TObject *Sender)
{
Edit1->Text="";
}
//--------------------------------------------------------------------------- |
|
добавил проверку на наличие формы 2
| C++ | 1
2
3
4
5
6
7
8
9
10
11
12
| if(Form2 == NULL)
{
}
else
{
Form2->Label1->Caption = Ini->ReadString("F2Label","Label1",Form2->Label1->Caption);
Form2->Label2->Caption = Ini->ReadString("F2Label","Label2",Form2->Label2->Caption);
Form2->Label3->Caption = Ini->ReadString("F2Label","Label3",Form2->Label3->Caption);
Form2->Label4->Caption = Ini->ReadString("F2Label","Label4",Form2->Label4->Caption);
Form2->Label9->Caption = Ini->ReadString("F2Label","Label9",Form2->Label9->Caption);
Form2->CheckBox1->Caption = Ini->ReadString ("F2CheckBox","CheckBox1",Form2->CheckBox1->Caption);
} |
|
а на самой форме 2 при открытии на создание формы написал
| C++ | 1
2
3
4
5
6
| //---------------------------------------------------------------------------
void __fastcall TForm2::FormCreate(TObject *Sender)
{
Form1->ini_load();
}
//--------------------------------------------------------------------------- |
|
и естественно обьявил в unit1.h функцию
| C++ | 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| class TForm1 : public TForm
{
__published: // IDE-managed Components
TEdit *Edit1;
TLabel *Label1;
TLabel *Label2;
TEdit *Edit2;
TLabel *Label8;
TLabel *Label4;
TLabel *Label5;
TLabel *Label6;
TRadioButton *RadioButton1;
TRadioButton *RadioButton2;
TButton *Button1;
void __fastcall Edit1Click(TObject *Sender);
void __fastcall Edit1Change(TObject *Sender);
void __fastcall ini_load(void);
private: // User declarations
public: // User declarations
__fastcall TForm1(TComponent* Owner);
}; |
|
0
|