#ifndef global_initH
#define global_initH
//глобальное объявление
struct GlobalGarage
{
int id;
AnsiString number;
AnsiString street;
AnsiString size;
AnsiString sdan_expluat;
AnsiString g_type;
};
extern GlobalGarage *GlbGarage;
//---------------------------------------------------------------------------
#endif
Определение глобальной структуры
Вот у меня есть файл global_init.h, в нем:
Код:
Вот меня интересует каким образом использововать ее в формах??
К примеру есть две формы Form1 и Form2
В первой форме я записываю данные в структуру:
Код:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "global_init.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
GlobalGarage *grjb;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
void __fastcall TForm1::BitBtn2Click(TObject *Sender)
{
grjb = new GlobalGarage;
grjb->id = 1;
grjb->number = "dfhg";
.........
grjb->g_type = "F";
}
#include <vcl.h>
#pragma hdrstop
#include "global_init.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
GlobalGarage *grjb;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
void __fastcall TForm1::BitBtn2Click(TObject *Sender)
{
grjb = new GlobalGarage;
grjb->id = 1;
grjb->number = "dfhg";
.........
grjb->g_type = "F";
}
Открывая вторую форму я должен прочесть сохраненные данные в grjb, но к сожелению не знаю как. Первый раз с структурами сталкиваюсь.....
Цитата: osmus
Здраствуйте!
Вот у меня есть файл global_init.h, в нем:
...
Открывая вторую форму я должен прочесть сохраненные данные в grjb, но к сожелению не знаю как. Первый раз с структурами сталкиваюсь.....
Вот у меня есть файл global_init.h, в нем:
...
Открывая вторую форму я должен прочесть сохраненные данные в grjb, но к сожелению не знаю как. Первый раз с структурами сталкиваюсь.....
Точно так же:
Подключаешь во второй модуль #include "global_init.h", при этом
писать GlobalGarage *grjb; уже не надо, у тебя есть это в первом модуле. И можешь обращаться к grjb. Но нужно проконтроллировать момент когда память ты под него выделяешь (т.е. у тебя к нему можно обращаться из второй формы только после нажатия на битбаттон 1).
Пример:
Создаем новое приложение, добавляем к пректу заголовочный файл("File1.h") с объявлением структуры, к примеру
Код:
#ifndef file1H
#define file1H
struct GlobalGarage
{
int id;
AnsiString number;
AnsiString street;
AnsiString size;
AnsiString sdan_expluat;
AnsiString g_type;
};
extern GlobalGarage *GlbGarage;
#endif
#define file1H
struct GlobalGarage
{
int id;
AnsiString number;
AnsiString street;
AnsiString size;
AnsiString sdan_expluat;
AnsiString g_type;
};
extern GlobalGarage *GlbGarage;
#endif
далее подключаем этот файл в cpp главной формы и объявляем
GlbGarage :
Код:
#include "File1.h"
GlobalGarage *GlbGarage;
GlobalGarage *GlbGarage;
для использования этой же переменной "из" второй формы, необходимо только подключить "File1.h"
маленький код для примера(главная форма)
Код:
#include "Unit28.h"
....
//---------------------------------------------------------------------------
__fastcall TForm27::TForm27(TComponent* Owner)
: TForm(Owner)
{
GlbGarage = new GlobalGarage();
}
//---------------------------------------------------------------------------
void __fastcall TForm27::Button1Click(TObject *Sender)
{
GlbGarage->id = 120;
Form28->ShowModal();
}
//---------------------------------------------------------------------------
....
//---------------------------------------------------------------------------
__fastcall TForm27::TForm27(TComponent* Owner)
: TForm(Owner)
{
GlbGarage = new GlobalGarage();
}
//---------------------------------------------------------------------------
void __fastcall TForm27::Button1Click(TObject *Sender)
{
GlbGarage->id = 120;
Form28->ShowModal();
}
//---------------------------------------------------------------------------
"Втора форма"
Код:
#include "File1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm28 *Form28;
//---------------------------------------------------------------------------
__fastcall TForm28::TForm28(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm28::FormShow(TObject *Sender)
{
Caption = GlbGarage->id;
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm28 *Form28;
//---------------------------------------------------------------------------
__fastcall TForm28::TForm28(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm28::FormShow(TObject *Sender)
{
Caption = GlbGarage->id;
}
//---------------------------------------------------------------------------
В новой программе все рабртает, все виднно и в других формах.
А вот внедряю в свой проэкт аналогично описаному коду выше
Ошибка:
[C++ Error] OperGarages.cpp(245): E2451 Undefined symbol 'grjb'
Тоисть ошибка к примеру на Caption = GlbGarage->id; (grjb одно и то же что GlbGarage)
Я смотрел все и настройки проэкта и все файлы, но не че непомогло:(
Как одно и тоже в разных программах может работать и неработать:confused: