Здравствуйте!
Такой вопрос возник..:
Есть две формы, соответственно, 2 модуля..
В 1-м модуле описана переменная, которая должна использоваться и во 2-м..
Для 1-го модуля:
#include <vcl.h>
#pragma hdrstop
#include "UnitMain.h"
#include "UnitKey.h"
#include "wincrypt.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TFormMain *FormMain;
AnsiString pass;
#include <vcl.h>
#pragma hdrstop
#include "UnitKey.h"
#include "UnitMain.h"
#include "wincrypt.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TFormKey *FormKey;
void __fastcall TFormKey::ButOkClick(TObject *Sender)
{
pass=LabEdPas->Text;
}
В header-файле для первого модуля опиши переменную, как внешнюю:
extern AnsiString pass;, тогда линкер ее найдет.
спасибо, получилось!
теперь схожая ситуация с использованием функции:
имеется проект с одним модулем UnitMain
к этому проекту через Add to project подключаю модуль (Unit2) из другого проекта. В Unit2 имеется процедура
void __fastcall TFormHem::ButEmcryptionClick(TObject *Sender)
extern void __fastcall TFormHem::ButEmcryptionClick(TObject *Sender);
Как ты собираешься вызывать TFormHem::ButEmcryptionClick, не зная как называется переменная типа TFormHem? Вот по умолчанию форма называется Form1, хотя класс, ее описывающий называется TForm1. Здесь Form1 - имя экземпляра, а TForm1 - имя типа... Обратиться к контролу на форме (или к какому-то обработчику) можно только по имени экземпляра, то есть, ты должна написать Form1->Edit1..., а не TForm1::Edit1. Поэтому обычно указатель на форму описывается в хидере как extern TForm1 *Form1, и при подключении к другому модулю этого хидера можно обращаться к Form1->{что-то}
Почему у тебя этого не произошло (т.е., почему обращение к ButEmcryptionClick по имени ФОРМЫ а не КЛАССА невозможно) - я не знаю... Приводи проект, будем разбираться...