Консультация № 60605
29.10.2006, 21:48
0.00 руб.
0 3 2
Здравствуйте уважаемые эксперты. Пишу на Borland C++ Builder6.0. Проблема такова. Присваиваю значение переменной в 1 форме , а во второй ее значение равно 0 ( см. приложение) Где ошибка? Не могу перенести данные!

Приложение:
В Unit2.h объявляем переменные....extern PACKAGE TForm2 *Form2; int PB100[50],A,dataset;...в Unit1.cpp дописываем.......#include "Unit2.h".......присваиваем значение.....__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner){ A=5 ;}......вызываем вторую формуvoid __fastcall TForm1::Button2Click(TObject *Sender){ Form2->ShowModal();.......сморим ее значение Unit2.cpp void __fastcall TForm2::Button3Click(TObject *Sender){ Label1->Caption=IntToStr( A);}..а там 0 ( если вывести на 1 форму то 5 )

Обсуждение

Неизвестный
29.10.2006, 23:54
общий
это ответ
Здравствуйте, Cappuccino!

Это разные A.
Чтобы убедиться в этом выведите на экран указатель на A
(ввиде (ULONG)&A) из первой формы, а потом из второй.
Объект А создается при каждом включении модуля Unit2.h.
Чтобы избежать этого используйте спецификатор extern.
Кроме того это же касается int PB100[50] и int dataset.

PS обожаю капуччино с шоколадной крошкой
Неизвестный
30.10.2006, 08:51
общий
это ответ
Здравствуйте, Cappuccino!
либо попробуйте как сказал JohnP (его предложение правильнее), либо пропишите глобальные переменные в Юнит1 и пропишите кольцом Unit1.h в Unit2 и наоборот
Неизвестный
30.10.2006, 20:33
общий
Вариант PROD не подходит, а JohnP я не совсем понял. Объект А объявлен 1раз в одном месте в конце файла Unit2.h и как extern ( в любом другом месте - видит только одна форма). Пробовал в одном месте в конце файла Unit1.h как extern тоже 0, если в обоих файлах , то выдает ошибку - дубликат А
Форма ответа