// Meto 9 espacios para que la línea
// 18 coincida con mi línea (ya que no puse el principio del archivo).
struct Calc
{
private:
Ezek::Int64 __vbuffer1;
Ezek::Int64 __vbuffer2;
bool __vbuffer;
gcroot<TextBox^> TBarraDeTexto;
public:
Calc(TextBox^ e)
{
TBarraDeTexto = e;
__vbuffer = true;
__vbuffer1 = Ezek::Int64(0);
__vbuffer2 = Ezek::Int64(0);
MaxNum = Ezek::Int64(0);
};
~Calc()
{
TBarraDeTexto.~gcroot();
}
Ezek::Int64 MaxNum;
void RefrescarBDT(TextBox^ TBarraDeTexto)
{
TBarraDeTexto->Text = vbuffer().ToString() + ",";
}
void InsertarNumero(int Numero, TextBox^ TBarraDeTexto)
{
if ((Ezek::Int64)NDigitos(vbuffer()) + 1 >= MaxNum)
{
// sonido de error
return;
}
vbuffer() = vbuffer() * 10 + Numero;
RefrescarBDT(TBarraDeTexto);
}
void QuitarNumero(TextBox^ TBarraDeTexto)
{
vbuffer() = vbuffer() / 10;
RefrescarBDT(TBarraDeTexto);
}
void QuitarTodosLosNumeros(TextBox^ TBarraDeTexto)
{
vbuffer() = 0;
RefrescarBDT(TBarraDeTexto);
}
void CambiarBuffer()
{
__vbuffer = (!__vbuffer);
}
Ezek::Int64 vbuffer()
{
if (__vbuffer) return __vbuffer1;
else return __vbuffer2;
}
};