MVP calculadora en C++ Builder

Después de mi C++ Builder in the requirements, una de las tareas que se nos encargó como Most Valuable Professional (MVP) de Embarcadero, fue la de crear una calculadora y grabar esa actividad en vídeo. Ello permitirá ver cómo se usan las herramientas y cómo mejorarlas.

Siendo la mayoría MVP de Delphi, me apetecía mucho participar, pero no quería (ni podía) dedicarle horas y horas. Estuve 10 o 15 minutos pensando y mirando en la documentación, hasta que al final encontré un enfoque sencillo y rápido de implementar que cumplía con los criterios de «calculadora», y que además era RAD. Por supuesto le falta toda la gestión de errores, y el código es muy mejorable. Pero como prueba de concepto servía.



Invertí media hora buscando softwares gratuitos que permitieran grabar la pantalla en vídeo, y finalmente, algo más de 10 minutos en programar y probar la GutiCalculator. Desarrollar un software nativo para Windows, por sencillo que éste sea en tan sólo 10 minutos, da una idea de la productividad que ofrece RAD Studio y C++ Builder.

Para evitar que termine perdiéndose, os dejo el vídeo del making-off:

Este es la única función de usuario que se encarga de manejar toda la operativa:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
//---------------------------------------------------------------------------
void __fastcall TfrmMain::FormKeyPress(TObject *Sender, System::WideChar &Key)
{
    static String sLastDisplay = "";
 
 
	//Add digits
	if ((isdigit(Key)) && (lblDisplay->Caption.Length() < 19))
	{
		lblDisplay->Caption += Key;
	}
	//Manage operations
	else if ((Key == '+') || (Key == '-') || (Key == '*') || (Key == '/'))
	{
		sLastDisplay = lblDisplay->Caption;
		lblDisplay->Caption = "";
		lblOperation->Caption = Key;
	}
	//Clear display
	else if (Key == 27)
	{
		lblDisplay->Caption = "";
		lblOperation->Caption = "";
	}
	//Remove last char
	else if ((Key == '\b') && (lblDisplay->Caption.Length() > 0))
	{
		lblDisplay->Caption = LeftStr(lblDisplay->Caption,  lblDisplay->Caption.Length() - 1);
	}
	//Show result
	else if ((Key == '\r') || (Key == '='))
	{
		if (lblOperation->Caption == '+')
		{
			lblDisplay->Caption = StrToInt64(sLastDisplay) + StrToInt64(lblDisplay->Caption);
		}
		else if (lblOperation->Caption == '-')
		{
			lblDisplay->Caption = StrToInt64(sLastDisplay) - StrToInt64(lblDisplay->Caption);
		}
		else if (lblOperation->Caption == '*')
		{
			lblDisplay->Caption = StrToInt64(sLastDisplay) * StrToInt64(lblDisplay->Caption);
		}
		else if (lblOperation->Caption == '/')
		{
			lblDisplay->Caption = StrToInt64(sLastDisplay) / StrToInt64(lblDisplay->Caption);
		}
	}
}

Y por supuesto, el código fuente completo y el binario enlazado estáticamente para Win32 aqui (1 MB. en formato ZIP).









2 comentarios en “MVP calculadora en C++ Builder”

  1. Muy buena e importante información, ciertamente una herramienta tremenda.
    Gracias por compartirla Guti, te mando un abrazo amigo. Saludos.

Deja un comentario