Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Gde da definisem globalne promenjive?

[es] :: C/C++ programiranje :: Gde da definisem globalne promenjive?

[ Pregleda: 2192 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

LSDCracker
Obrisan Profil

Član broj: 161168
Poruke: 62



Profil

icon Gde da definisem globalne promenjive?01.06.2008. u 13:55 - pre 193 meseci
Treba mi pomoc.
Code:

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TCalc *Calc;
//---------------------------------------------------------------------------
__fastcall TCalc::TCalc(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TCalc::B0Click(TObject *Sender)
{
Edit1->Text = Edit1->Text + '0';
}
//---------------------------------------------------------------------------
void __fastcall TCalc::B1Click(TObject *Sender)
{
Edit1->Text = Edit1->Text + '1';        
}
//---------------------------------------------------------------------------
void __fastcall TCalc::B2Click(TObject *Sender)
{
Edit1->Text = Edit1->Text + '2';        
}
//---------------------------------------------------------------------------
void __fastcall TCalc::B3Click(TObject *Sender)
{
Edit1->Text = Edit1->Text + '3';        
}
//---------------------------------------------------------------------------
void __fastcall TCalc::B4Click(TObject *Sender)
{
Edit1->Text = Edit1->Text + '4';
}
//---------------------------------------------------------------------------
void __fastcall TCalc::B5Click(TObject *Sender)
{
Edit1->Text = Edit1->Text + '5';        
}
//---------------------------------------------------------------------------
void __fastcall TCalc::B6Click(TObject *Sender)
{
Edit1->Text = Edit1->Text + '6';        
}
//---------------------------------------------------------------------------
void __fastcall TCalc::B7Click(TObject *Sender)
{
Edit1->Text = Edit1->Text + '7';        
}
//---------------------------------------------------------------------------
void __fastcall TCalc::B8Click(TObject *Sender)
{
Edit1->Text = Edit1->Text + '8';        
}
//---------------------------------------------------------------------------
void __fastcall TCalc::B9Click(TObject *Sender)
{
Edit1->Text = Edit1->Text + '9';        
}
//---------------------------------------------------------------------------




void __fastcall TCalc::FormKeyDown(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
if(Key==VK_NUMPAD0){
        //B0->SetFocus();
        Edit1->Text=Edit1->Text+"0";
        }
if(Key==VK_NUMPAD1){
        //B1->SetFocus();
        Edit1->Text=Edit1->Text+"1";
        }
if(Key==VK_NUMPAD2){
        //B2->SetFocus();
        Edit1->Text=Edit1->Text+"2";
        }
if(Key==VK_NUMPAD3){
        //B3->SetFocus();
        Edit1->Text=Edit1->Text+"3";
        }
if(Key==VK_NUMPAD4){
        //B4->SetFocus();
        Edit1->Text=Edit1->Text+"4";
        }
if(Key==VK_NUMPAD5){
        //B5->SetFocus();
        Edit1->Text=Edit1->Text+"5";
        }
if(Key==VK_NUMPAD6){
        //B6->SetFocus();
        Edit1->Text=Edit1->Text+"6";
        }
if(Key==VK_NUMPAD7){
        //B7->SetFocus();
        Edit1->Text=Edit1->Text+"7";
        }
if(Key==VK_NUMPAD8){
       // B8->SetFocus();
        Edit1->Text=Edit1->Text+"8";
        }
if(Key==VK_NUMPAD9){
        //B9->SetFocus();
        Edit1->Text=Edit1->Text+"9";
        }
if(Key==VK_MULTIPLY){
        //BPUTA->SetFocus();
        }
if(Key==VK_DIVIDE){
        //BPODELJENO->SetFocus();
        }
if(Key==VK_ADD){
        //BPLUS->SetFocus();
        }
if(Key==VK_SUBTRACT){
        //BMINUS->SetFocus();
        }

}
//---------------------------------------------------------------------------

void __fastcall TCalc::FormActivate(TObject *Sender)
{
 BNL->SetFocus();
 //Edit1->SetFocus();
 //Meni->SetFocus();
 }
//---------------------------------------------------------------------------


void __fastcall TCalc::FormKeyUp(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
if(Key==VK_RETURN){
          //BJEDNAKO->SetFocus();
          Edit1->Undo();
        }
if(Key==VK_SEPARATOR){
        //BZAREZ->SetFocus();
        }
}
//---------------------------------------------------------------------------



void __fastcall TCalc::BNLClick(TObject *Sender)
{
Edit1->Clear();
}
//---------------------------------------------------------------------------


Gde se ovde stavljaju globalne promenjive?
Znaci treba mi 3 promenjive tipa double i jedan int.
Gde da definisem promenjive koje cu moci da koristim bilo gde kasnije?
Hvala^^
 
Odgovor na temu

LSDCracker
Obrisan Profil

Član broj: 161168
Poruke: 62



Profil

icon Re: Gde da definisem globalne promenjive?01.06.2008. u 23:11 - pre 193 meseci
Imal koga ko zna, ljudi meni ovo hitno treba.
Sorry ako je ovaj posthunt ili kako vec zabranjen, al meni stvarno hitno treba obavestenje gde da stavim promenjive koje cu moci da koristim u bilo kom eventu.
Ajd please sto pre odgovor. Mora da neko zna.
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.tekostolac.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Gde da definisem globalne promenjive?02.06.2008. u 06:58 - pre 193 meseci
Globalne promenljive mozes uvesti ispod TCalc *Calc;
Code:

// ...
TCalc *Calc;
double d1;
double d2;
double d3;
int i1;
// ...

... pri čemu u drugom CPP fajlu (ako ćeš ih tamo i koristiti) treba da to i 'javiš':

--- Neki drugi CPP fajl ---
Code:

// ...
extern double d1;
extern double d2;
extern double d3;
extern int i1;
// ...


Ipak, globalne promenljive samo govore da nisi dovoljno dobro projektovao sistem. Razmisli čemu semantički (logički) pripadaju te promenljive... Verovatno samoj TCalc klasi. Tada treba da ih staviš u HEADER.

--- TCalc (Unit1.h) ---
Code:

// ...
public: // recimo, u javnoj sekciji
double d1;
double d2;
double d3;
int i1;
// ...


Iz drugog CPP fajla, pristupaš promenljivima ovako:
--- Neki drugi CPP fajl ---
Code:

// ...
#include "Unit1.h"
// ...
ShowMessage( Calc->d1 );
ShowMessage( Calc->d2 );
ShowMessage( Calc->d3 );
ShowMessage( Calc->i1 );
// ...

 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.tekostolac.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Gde da definisem globalne promenjive?02.06.2008. u 07:11 - pre 193 meseci
Što se tiče ovog koda, može bolje:
Code:

Ovaj deo koda se može značajno racionalizovati:
//---------------------------------------------------------------------------
void __fastcall TCalc::B0Click(TObject *Sender)
{
Edit1->Text = Edit1->Text + '0';
}
//---------------------------------------------------------------------------
void __fastcall TCalc::B1Click(TObject *Sender)
{
Edit1->Text = Edit1->Text + '1';        
}
//---------------------------------------------------------------------------
void __fastcall TCalc::B2Click(TObject *Sender)
{
Edit1->Text = Edit1->Text + '2';        
}
//---------------------------------------------------------------------------
void __fastcall TCalc::B3Click(TObject *Sender)
{
Edit1->Text = Edit1->Text + '3';        
}
//---------------------------------------------------------------------------
void __fastcall TCalc::B4Click(TObject *Sender)
{
Edit1->Text = Edit1->Text + '4';
}
//---------------------------------------------------------------------------
void __fastcall TCalc::B5Click(TObject *Sender)
{
Edit1->Text = Edit1->Text + '5';        
}
//---------------------------------------------------------------------------
void __fastcall TCalc::B6Click(TObject *Sender)
{
Edit1->Text = Edit1->Text + '6';        
}
//---------------------------------------------------------------------------
void __fastcall TCalc::B7Click(TObject *Sender)
{
Edit1->Text = Edit1->Text + '7';        
}
//---------------------------------------------------------------------------
void __fastcall TCalc::B8Click(TObject *Sender)
{
Edit1->Text = Edit1->Text + '8';        
}
//---------------------------------------------------------------------------
void __fastcall TCalc::B9Click(TObject *Sender)
{
Edit1->Text = Edit1->Text + '9';        
}


Napraviš ovaj događaj za samo JEDNO dugme, a ostalim dugmadima ga samo pridružiš (izabereš iz padajuće liste)
Code:

void __fastcall TForm1::Button1Click(TObject *Sender)
{
    TButton *KojiTasterJePritisnut = dynamic_cast<TButton *>(Sender);

    if ( KojiTasterJePritisnut )
       Edit1->Text = Edit1->Text + KojiTasterJePritisnut->Caption;
}

Iz tvog koda se ne vidi kog tipa je taster. U mom primeru je TButton. Ako se radi o TSpeedButton onda izvrši zamenu. Kod polazi od pretpostavke da ono što piše na tasteru bude i preslikano na klik. Ako to nije slučaj, može se rešiti recimo sa Tag osobinom, ali to je već druga priča.

 
Odgovor na temu

LSDCracker
Obrisan Profil

Član broj: 161168
Poruke: 62



Profil

icon Re: Gde da definisem globalne promenjive?02.06.2008. u 15:24 - pre 193 meseci
Hvala za ovo, bas mi je ovo trebalo.
Ako negde jos zapnem, javim!
Hvala jos jednom!
 
Odgovor na temu

[es] :: C/C++ programiranje :: Gde da definisem globalne promenjive?

[ Pregleda: 2192 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.