Calculator Lazarus - overflow stivă în limba rusă

Punerea în aplicare a ajuta la următoarea funcție calculator: Evaluarea „lanț“ a operațiunilor. De exemplu, atunci când apăsați tastele în următoarea ordine: 5 - 1 = = = rezultatul final este egal cu 2. Voi primi doar un lanț ca aceasta: 5 * = = = (în loc de 5, iar „*“ poate fi alte numere valide și operații simboluri ). Sunt atașarea unui cod de procedură care este declanșată prin apăsarea tastei „=“:

Ideea de cod este că există o editare boolean. responsabil pentru câmpul de editare. Dacă este adevărat, apăsând cifrele anexate la sfârșitul numărului, dacă este fals, înlocui complet textul în figură. Potrivit ei, eu, și determină dacă lanțul de calcul este pornit sau nu (prin apăsarea tastei de operare este (variabila) devine o minciună, că al doilea operand nu este unit cu al doilea). Apoi, există întreaga variabilă de tip I - Sunt pe ea definește funcționarea contului, în cazul în care prima, apoi să memoreze operația și un operand. Data viitoare când apăsați tasta „=“ este o verificare în cazul în care operand iar operația este aceeași ca și cea anterioară, apoi a început „lanț“. Dacă sa schimbat ceva, este un alt calcule „lanț“, așa că am resetat. Acest cod funcționează doar pentru un lanț cu primul operand și semnul. Și cum să facă, astfel încât acesta a lucrat pentru doi operanzi?

set 18 septembrie '11 la 09:39

Am primit acest calculator:

În primul rând, declarăm o variabilă globală în secțiunea de var

Apoi, anunta 2 sub privat:

Să scrie codul lor. Adăugați numărul în Editare:

Crearea unui eveniment OnCreate pentru forma de a seta valorile steaguri

Și acum, ne asociem procedurile noastre cu butoane pentru acest lucru este suficient pentru unul dintre butoanele, care adaugă un număr (sau un separator) pentru a scrie în cazul OnClick și treci celelalte butoane eveniment. De exemplu, pentru un buton care adaugă 0:

De asemenea, vom face cu toate butoanele pentru operații (+, -, *, /). Am ales un plus:

Handler pentru „egal“ buton:

În cele din urmă, handler pentru butonul „reset“: