Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Определение глобальной структуры

43K
26 января 2009 года
osmus
7 / / 02.01.2009
Здраствуйте!
Вот у меня есть файл global_init.h, в нем:

Код:
#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


Вот меня интересует каким образом использововать ее в формах??
К примеру есть две формы 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";
 
}


Открывая вторую форму я должен прочесть сохраненные данные в grjb, но к сожелению не знаю как. Первый раз с структурами сталкиваюсь.....
246
27 января 2009 года
GIZMO
1.8K / / 30.07.2004
Цитата: osmus
Здраствуйте!
Вот у меня есть файл global_init.h, в нем:
...
Открывая вторую форму я должен прочесть сохраненные данные в grjb, но к сожелению не знаю как. Первый раз с структурами сталкиваюсь.....


Точно так же:
Подключаешь во второй модуль #include "global_init.h", при этом
писать GlobalGarage *grjb; уже не надо, у тебя есть это в первом модуле. И можешь обращаться к grjb. Но нужно проконтроллировать момент когда память ты под него выделяешь (т.е. у тебя к нему можно обращаться из второй формы только после нажатия на битбаттон 1).

43K
02 февраля 2009 года
osmus
7 / / 02.01.2009
Спасибо все получилось:)
Пример:
Создаем новое приложение, добавляем к пректу заголовочный файл("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


далее подключаем этот файл в cpp главной формы и объявляем
GlbGarage :
 
Код:
#include "File1.h"
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();
}
//---------------------------------------------------------------------------

"Втора форма"
Код:
#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;  
}
//---------------------------------------------------------------------------



В новой программе все рабртает, все виднно и в других формах.

А вот внедряю в свой проэкт аналогично описаному коду выше
Ошибка:
[C++ Error] OperGarages.cpp(245): E2451 Undefined symbol 'grjb'

Тоисть ошибка к примеру на Caption = GlbGarage->id; (grjb одно и то же что GlbGarage)

Я смотрел все и настройки проэкта и все файлы, но не че непомогло:(

Как одно и тоже в разных программах может работать и неработать:confused:
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог