Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Использование переменных и структур в другой форме


Автор: stmamont 14.9.2004, 19:52
Вопрос может быть идиотский, но лучше один раз понять и все.
Как сделать, что бы я мог пользоваться одними и теми же переменными и структурами, и в Unit1.cpp и Unit2.cpp?
Пользуюсь C++ builder 6.0/

Автор: Dark Elf 14.9.2004, 19:58
Используй extern

Например :
Unit1.cpp

int a = 7;

Unit2.cpp

extern int a;
//Используешь a

Автор: mr.DUDA 14.9.2004, 19:58
я в билдере не спец, но имхо - объяви переменную в одном модуле, а во втором напиши такое же объявление, но с модификатором extern и без инициализации - и пользуйся ею как глобальной переменной.
Добавлено @ 19:58
З.Ы. опередили smile.gif

Автор: stmamont 14.9.2004, 20:04
В Unit1.cpp

struct serv_param{
AnsiString ServerName;
TTime LastTime;
TDate LastDate;
TColor Color;
} servaks;

serv_param Serverz[1000];

а в Unit2.cpp
extern serv_param Serverz[1000];
и ошибка
Declaration Syntax Error
sad.gif

Автор: JackYF 14.9.2004, 23:26
Ты должен и в Юнит2 добавить определение структуры!

Автор: Конструктор 15.9.2004, 07:37
Пишем файл structs.h

Код

/*
Заголовочный файл в котором должне лежать все ОБЪЯВЛЕНИЯ внешних переменных, т.е. доступных всем кто включит этот файл директивой include. Здесь не должно быть ОПРЕДЕЛЕНИЙ переменных, только типы и объявления.
*/


#ifndef __STRUCTS__ //Вся эта фигня чтобы нельзя было подключить этот файл в инклуде дважды
#define __STRUCTS__

#include <system.hpp> //Чтобы был AnsiString и т.п.

struct serv_param
{
   AnsiString ServerName;
   TTime LastTime;
   TDate LastDate;
   TColor Color;
};

extern serv_param Serverz[1000];
extern serv_param servaks;

#endif __STRUCTS__



Пишем файл structs.cpp

Код

/*
Файл в котором прописываются ОПРЕДЕЛЕНИЯ всех переменных объявленных в заголовочном файле модуля.
*/

#include "structs.h" //Заметь, тут кавычки, а не треугольные скобки

serv_param Serverz[1000];
serv_param servaks;


Затем в unit1.cpp и unit2.cpp пишешь
Код

#include "structs.h"


Ворде усё. Чтобы не создавать файлы в рукопашную в билдере есть File->New->Unit, он создаст оба файла, тебе надо будет только имя при сохранении сказать. Есди будешь делать файлы вручную не забудь их потом добавить в проект.

Автор: Adil' 15.9.2004, 13:50
stmamont, имхо, лучше сделай твои переменны-структуры членами данными форм

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)