проблема в следующем! если в нормальном калькуляторе ввести с клавы первое значение 10 потом нажать минус 1 а потом ентер то с каждым нажатием ентера результирующее значение уменьшается на 1! А у меня ток один раз а потом либо 0 либо результирующее значение привожу код:
размещение класса ClassCalc.H
| Код | //---------------------------------------------------------------------------
#ifndef ClassCalkH #define ClassCalkH
//--------------------------------------------------------------------------- class TCalcPressKey { public: char SIMVOL; float PERVOE_ZNACHENIE,VTOROE_ZNACHENIE,TOTAL,TEMP_BUUF; int COUNT_PRESS_BUTTON_NUMBER, COUNT_PRESS_SIMVOL_NUMBER; CalcPressKey();
float KALKULATOR(char SIMVOL, float PERVOE_ZNACHENIE,float VTOROE_ZNACHENIE,float TOTAL,float TEMP_BUUF); };
//--------------------------------------------------------------------------- #endif
|
размещение методов ClassCalc.cpp
| Код | //---------------------------------------------------------------------------
#pragma hdrstop
#include "ClassCalk.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
//--------------------------------------------------------------------------- float TCalcPressKey::KALKULATOR(char SIMVOL, float PERVOE_ZNACHENIE, float VTOROE_ZNACHENIE,float TOTAL,float TEMP_BUUF) { TEMP_BUUF = PERVOE_ZNACHENIE; switch(SIMVOL) { case '-':TOTAL = PERVOE_ZNACHENIE - VTOROE_ZNACHENIE; break; // Minus case '+':TOTAL = PERVOE_ZNACHENIE + VTOROE_ZNACHENIE; break; case '*':TOTAL = PERVOE_ZNACHENIE * VTOROE_ZNACHENIE; break; case '/':TOTAL = PERVOE_ZNACHENIE / VTOROE_ZNACHENIE; break; } return TOTAL; } TCalcPressKey::CalcPressKey() { PERVOE_ZNACHENIE = 0; VTOROE_ZNACHENIE = 0; TOTAL = 0; COUNT_PRESS_BUTTON_NUMBER = 0; COUNT_PRESS_SIMVOL_NUMBER = 0; SIMVOL = ' '; }
|
заголовочный файл главной формы
| Код | --------------------------------------------------------------------------
//---------------------------------------------------------------------------
#ifndef CalcUnitH #define CalcUnitH //--------------------------------------------------------------------------- #include <Classes.hpp> #include <Controls.hpp> #include <StdCtrls.hpp> #include <Forms.hpp> #include <XPMan.hpp> #include "ClassCalk.h" //--------------------------------------------------------------------------- class TForm1 : public TForm { __published: // IDE-managed Components TEdit *Edit1; TButton *BT0; TButton *BTPoint; TButton *BTEgal; TButton *BT1; TButton *BT2; TButton *BT3; TButton *BT4; TButton *BT5; TButton *BT6; TButton *BT7; TButton *BT8; TButton *BT9; TButton *BTPlus; TButton *BTDelenie; TButton *BTMP; TButton *BTMinus; TButton *BTUmnuj; TButton *BTClear; TXPManifest *XPManifest1; void __fastcall Edit1Change(TObject *Sender); void __fastcall Edit1KeyPress(TObject *Sender, char &Key); void __fastcall Edit1KeyDown(TObject *Sender, WORD &Key, TShiftState Shift); private: // User declarations public: // User declarations __fastcall TForm1(TComponent* Owner); //=========MyClass Declaration====Start================================= TCalcPressKey CalcPressKey(); TCalcPressKey MY_CALK; float KALKULATOR(char SIMVOL, float PERVOE_ZNACHENIE,float VTOROE_ZNACHENIE,float TOTAL,float TEMP_BUUF);
//=========MyClass Declaration====End =================================
}; //--------------------------------------------------------------------------- extern PACKAGE TForm1 *Form1; //--------------------------------------------------------------------------- #endif
|
Срр файл главной формы
| Код | //---------------------------------------------------------------------------
#include <vcl.h> #pragma hdrstop #include<winuser.h> SysUtils.hpp #include "SysUtils.hpp"
#include "CalcUnit.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1;
//--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { TForm1* CalcPressKey(); } //--------------------------------------------------------------------------- void __fastcall TForm1::Edit1Change(TObject *Sender) { MY_CALK.COUNT_PRESS_BUTTON_NUMBER=1;
} //--------------------------------------------------------------------------- void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key) {
//-----------------najatie ravno----------------end
if ((Key >= '0') && (Key <= '9')) {
return ; } else Key = 0;
} //--------------------------------------------------------------------------- void __fastcall TForm1::Edit1KeyDown(TObject *Sender, WORD &Key, TShiftState Shift) { //-----------------Najatie +,-,*,/, ----------------Start if(Key == 189) { MY_CALK.COUNT_PRESS_BUTTON_NUMBER = 2; MY_CALK.SIMVOL = '-'; MY_CALK.PERVOE_ZNACHENIE = StrToFloat(Edit1->Text); Edit1->Text=' '; } //------------------------------------------------- if(Key == 187) { MY_CALK.COUNT_PRESS_BUTTON_NUMBER = 2; MY_CALK.SIMVOL = '+'; MY_CALK.PERVOE_ZNACHENIE = StrToFloat(Edit1->Text); Edit1->Text=' '; } //------------------------------------------------- if(Key == 191) { MY_CALK.COUNT_PRESS_BUTTON_NUMBER = 2; MY_CALK.SIMVOL = '/'; MY_CALK.PERVOE_ZNACHENIE = StrToFloat(Edit1->Text); Edit1->Text=' ';
} //------------------------------------------------- if(Key == 56) { MY_CALK.COUNT_PRESS_BUTTON_NUMBER = 2; MY_CALK.SIMVOL = '*'; MY_CALK.PERVOE_ZNACHENIE = StrToFloat(Edit1->Text); Edit1->Text=' '; } //-----------------Najatie +,-,*,/, ------------End
//<-------------------------------------------------------------------->
//-----------------najatie ravno--------------start if(Key ==13) {
int count=1; if(MY_CALK.COUNT_PRESS_BUTTON_NUMBER ==1 && count==1) {
MY_CALK.VTOROE_ZNACHENIE= StrToFloat(Edit1->Text); MY_CALK.TEMP_BUUF = MY_CALK.VTOROE_ZNACHENIE; MY_CALK.TOTAL=MY_CALK.KALKULATOR(MY_CALK.SIMVOL,MY_CALK.PERVOE_ZNACHENIE,MY_CALK.VTOROE_ZNACHENIE, MY_CALK.TOTAL,MY_CALK.TEMP_BUUF);
Edit1->Text= FloatToStr(MY_CALK.TOTAL); MY_CALK.PERVOE_ZNACHENIE = StrToFloat(Edit1->Text); MY_CALK.VTOROE_ZNACHENIE = MY_CALK.TEMP_BUUF; ShowMessage("Srabotal IF"); count=2; } if(MY_CALK.COUNT_PRESS_BUTTON_NUMBER ==1 && count==2) { ShowMessage("Srabotal else"); MY_CALK.VTOROE_ZNACHENIE = MY_CALK.TEMP_BUUF; MY_CALK.TOTAL=MY_CALK.KALKULATOR(MY_CALK.SIMVOL,MY_CALK.PERVOE_ZNACHENIE,MY_CALK.VTOROE_ZNACHENIE, MY_CALK.TOTAL,MY_CALK.TEMP_BUUF); Edit1->Text= FloatToStr(MY_CALK.TOTAL); MY_CALK.PERVOE_ZNACHENIE = StrToFloat(Edit1->Text); count = 1; } }
} //---------------------------------------------------------------------------
|
за ранее прошу не пинать! ток начал изучать классы
|