Отговори на тема  [ 31 мнения ]  Отиди на страница 1, 2, 3  Следваща
C++ builder споделяне на променливи 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Яну 01, 2012 7:04 pm
Мнения: 2580
Местоположение: Велико Търново / София
Мнение C++ builder споделяне на променливи
Имам една програма със 2 форми Form1 и Form2. Имам и променлива unsigned char variable1 декларирана във Unit1.cpp (където се пишат кодовете на Form1) . Когато я променям от Unit1.cpp си се променя, но когато реша да я променям от Unit2.cpp не ще да я променя. Но пък я открива, не ми дава грешка, че няма такава.

_________________
https://github.com/slav4ocom/


Вто Май 09, 2017 12:43 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Сеп 27, 2004 8:22 am
Мнения: 15501
Местоположение: София
Мнение Re: C++ builder споделяне на променливи
Ми така е, като се учи език за програмиране посредство уизърди.

На обектите им викат форми, не знаят що е то област на видимост на променлива...

Най - просто ( и най-грозно ) е да декларираш някъде една глобална променлива и да я мажеш от където ти падне. Ще питаш как - ами с уизърд не знам как става :)

_________________
"Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.


Вто Май 09, 2017 2:39 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Яну 01, 2012 7:04 pm
Мнения: 2580
Местоположение: Велико Търново / София
Мнение Re: C++ builder споделяне на променливи
Ами декларирах една глобална променлива variable1 в хедъра Unit1.h . Излиза ми като Form1->variable1 . Когато напиша Form1->Variable1 = 1; // във Unit1.cpp всичко работи. Когато го напиша във Unit2cpp се компилира пак. Но когато пусна програмата ми и натисна бутона във Form2 който прави Form1->Variable1 = 1; ми дава грешка "Access violation at address 00403785 in module "Programa.exe". Write of address 00000320" :|

_________________
https://github.com/slav4ocom/


Вто Май 09, 2017 4:17 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 8:21 pm
Мнения: 27949
Местоположение: София
Мнение Re: C++ builder споделяне на променливи
как ще ти е глобална в unit1.h .... и как всъщност я декларира ?


Вто Май 09, 2017 4:31 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Яну 01, 2012 7:04 pm
Мнения: 2580
Местоположение: Велико Търново / София
Мнение Re: C++ builder споделяне на променливи
Код:
        void __fastcall FormCreate(TObject *Sender);
private:   // User declarations
public:      // User declarations
        __fastcall TForm1(TComponent* Owner);
        unsigned char Variable1;
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif

Ето частта от Unit1.h
ами така го направих, като рових в нета намерих описано по такъв начин. Във programa.cpp няма public
Иначе си го направих по бабешкия начин, бутона вика функция която е във Unit1.cpp и от там си я сетва локално вариаблата. Но въпроса е принципен, а и не е културно направено някак, но пък като не са ми ясни нещата... :(

_________________
https://github.com/slav4ocom/


Вто Май 09, 2017 7:50 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 8:21 pm
Мнения: 27949
Местоположение: София
Мнение Re: C++ builder споделяне на променливи
я покажи целия .h файл, това ли ти е основната да я наречем форма ? Това не съм го пипал от 10 години, то вече не беше ли нещо друго, да не е борланд ?


Вто Май 09, 2017 8:07 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Сеп 26, 2004 3:11 pm
Мнения: 3742
Местоположение: София
Мнение Re: C++ builder споделяне на променливи
Form1 създадена ли е преди да си викнал Form1->п му м... ? Хедър файлът с описанието на класа Form1 видим ли е от Form2 ?


Вто Май 09, 2017 8:13 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 8:21 pm
Мнения: 27949
Местоположение: София
Мнение Re: C++ builder споделяне на променливи
Абе аз затова исках да видя целия хедър на 1 ... в крайна сметка в форм 2 инцлудва ли някъде този на форм 1 или няой друг който да му казва че има такава променлива ?


Вто Май 09, 2017 8:17 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Яну 01, 2012 7:04 pm
Мнения: 2580
Местоположение: Велико Търново / София
Мнение Re: C++ builder споделяне на променливи
Borland C++ builder 4 (Да старичко е доста, но едва ли това е проблема)
Form1 е основната, Form2 се прави видима с бутон намиращ се във Form1.
във Unit1.cpp има
Код:
#include "Unit1.h"
#include "Unit2.h"

във Unit2.cpp има
Код:
#include "Unit2.h"
#include "Unit1.cpp"
#include "Unit1.h"

Unit1.h
Код:
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ExtCtrls.hpp>
#include <NMsmtp.hpp>
#include <Psock.hpp>

//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:   // IDE-managed Components
        TGroupBox *DeviceBox;
        TGroupBox *EventBox;
        TMemo *EventMemo;
        TGroupBox *UserBox;
        TButton *delButton;
        TEdit *Edit1;
        TGroupBox *GroupBox1;
        TGroupBox *GroupBox2;
        TListBox *DeviceListBox;
        TLabel *EventLabel;
        TButton *clrButton;
        TButton *Button1;
        TGroupBox *GroupBox3;
        TEdit *Edittime;
        TButton *Button4;
        TStaticText *StaticText1;
        TStaticText *StaticText2;
        TButton *Button3;
        TLabel *Label2;
        TButton *Button5;
        TButton *readButton;
        TTimer *Timer1;
        TButton *Button2;
        void __fastcall Timer1Timer(TObject *Sender);
        void __fastcall DeviceListBoxDblClick(TObject *Sender);
        void __fastcall syncButtonClick(TObject *Sender);
        void __fastcall autoreadButtonClick(TObject *Sender);
        void __fastcall delButtonClick(TObject *Sender);
        void __fastcall clrButtonClick(TObject *Sender);
        void __fastcall doubleButtonClick(TObject *Sender);
        void __fastcall Edit1Change(TObject *Sender);
        void __fastcall Button1Click(TObject *Sender);
        void __fastcall readButtonClick(TObject *Sender);
        void __fastcall Button4Click(TObject *Sender);
        void __fastcall Button3Click(TObject *Sender);
        void __fastcall Button5Click(TObject *Sender);
        void __fastcall Button2Click(TObject *Sender);
        void __fastcall FormCreate(TObject *Sender);
private:   // User declarations
public:      // User declarations
        __fastcall TForm1(TComponent* Owner);
        unsigned int Variable1;
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif

_________________
https://github.com/slav4ocom/


Вто Май 09, 2017 8:22 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Сеп 26, 2004 3:11 pm
Мнения: 3742
Местоположение: София
Мнение Re: C++ builder споделяне на променливи
това инклудване на .cpp файл къде си го учил? Да отидеш и да направиш рекламация на даскалите! Искай си обратно парите!


Вто Май 09, 2017 8:30 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Яну 01, 2012 7:04 pm
Мнения: 2580
Местоположение: Велико Търново / София
Мнение Re: C++ builder споделяне на променливи
Ами като го махна не ми разпознава фукциите дето съм ги описал в Unit1.cpp

_________________
https://github.com/slav4ocom/


Вто Май 09, 2017 8:33 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Сеп 26, 2004 3:11 pm
Мнения: 3742
Местоположение: София
Мнение Re: C++ builder споделяне на променливи
А ти във функциите писал ли си Form1::Kekava_funktsia() ... ? Обърни внимание на Form1::


Вто Май 09, 2017 8:35 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Яну 01, 2012 7:04 pm
Мнения: 2580
Местоположение: Велико Търново / София
Мнение Re: C++ builder споделяне на променливи
Във Unit1.cpp имам
Код:
void Funkciq(void)
{
alabala;
}
Така са описани моите функции и си се извикват успешно от Unit2.cpp

_________________
https://github.com/slav4ocom/


Вто Май 09, 2017 8:37 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Сеп 26, 2004 3:11 pm
Мнения: 3742
Местоположение: София
Мнение Re: C++ builder споделяне на променливи
slav4o.com написа:
Във Unit1.cpp имам
Код:
void Funkciq(void)
{
alabala;
}


Като бира без картофки .... Във хедър файла си описал фъкциите като мембъри на класа, в С файла си ги описал като свободно летящи. Не става. И с подкуп не става.


Вто Май 09, 2017 8:39 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Яну 01, 2012 7:04 pm
Мнения: 2580
Местоположение: Велико Търново / София
Мнение Re: C++ builder споделяне на променливи
Голяма какаманга стана. Обърках се тотално.
Махнах #include Unit1.cpp и си заработи това с променливата. Обаче сега с функциите не мога да се оправя. Ползват се и от двете форми. От Unit2.cpp не се виждат. Къде и как да ги опиша ?

_________________
https://github.com/slav4ocom/


Последна промяна slav4o.com на Вто Май 09, 2017 9:43 pm, променена общо 1 път



Вто Май 09, 2017 9:38 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 31 мнения ]  Отиди на страница 1, 2, 3  Следваща

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 4 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни