Dai eu queria que vocês olhasem e podessem dizer onde posso melhorar pra evitar tantas linhas de codigo
Segue o código
CODE
unit principal;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
visor_txt: TEdit;
sete_btn: TButton;
quatro_btn: TButton;
um_btn: TButton;
zero_btn: TButton;
oito_btn: TButton;
cinco_btn: TButton;
dois_btn: TButton;
ponto_btn: TButton;
nove_btn: TButton;
seis_btn: TButton;
tres_btn: TButton;
igual_btn: TButton;
multi_btn: TButton;
sub_btn: TButton;
adicao_btn: TButton;
bks_btn: TButton;
limpar_btn: TButton;
raiz_btn: TButton;
divisao_btn: TButton;
Panel1: TPanel;
procedure zero_btnClick(Sender: TObject);
procedure um_btnClick(Sender: TObject);
procedure dois_btnClick(Sender: TObject);
procedure tres_btnClick(Sender: TObject);
procedure quatro_btnClick(Sender: TObject);
procedure cinco_btnClick(Sender: TObject);
procedure seis_btnClick(Sender: TObject);
procedure sete_btnClick(Sender: TObject);
procedure oito_btnClick(Sender: TObject);
procedure nove_btnClick(Sender: TObject);
procedure ponto_btnClick(Sender: TObject);
procedure adicao_btnClick(Sender: TObject);
procedure sub_btnClick(Sender: TObject);
procedure multi_btnClick(Sender: TObject);
procedure divisao_btnClick(Sender: TObject);
procedure igual_btnClick(Sender: TObject);
procedure raiz_btnClick(Sender: TObject);
procedure limpar_btnClick(Sender: TObject);
procedure bks_btnClick(Sender: TObject);
private
function operacao(operacao: integer): string;
function addVisor(btn: string): string;
function mostraResultado(): string;
public
{ Public declarations }
end;
var
Form1: TForm1;
num1, num2: double;
num: string;
op: integer;
verif: boolean = false;
verif2: boolean = false;
(*legenda: '+' = 1 '-' = 2 '*' = 3 '/' = 4*)
implementation
{$R *.dfm}
(*Funções*)
function TForm1.operacao(operacao: integer): string;
begin
if verif2 = true then
begin
if op > 0 then
begin
num2:= StrToFloat(visor_txt.Text);
case op of
1: num1:= num1 + num2;
2: num1:= num1 - num2;
3: num1:= num1 * num2;
4: num1:= num1 / num2;
end;
op := operacao;
verif:= true;
Result:= FloatToStr(num1);
verif2:= false;
exit;
end
else
num1:= StrToFloat(visor_txt.Text);
op := operacao;
verif2:= false;
Result:= '';
end;
end;
function TForm1.addVisor(btn: string): string;
begin
if verif = true then
begin
visor_txt.Text:= '';
verif:= false;
end;
Result:= visor_txt.Text + btn;
verif2:= true;
end;
function TForm1.mostraResultado(): string;
begin
if op > 0 then
begin
num2:= StrToFloat(visor_txt.Text);
case op of
1: Result:= FloatToStr(num1 + num2);
2: Result:= FloatToStr(num1 - num2);
3: Result:= FloatToStr(num1 * num2);
4: Result:= FloatToStr(num1 / num2);
end;
verif:= false;
op:= 0;
end;
end;
procedure TForm1.zero_btnClick(Sender: TObject);
begin
visor_txt.Text:= addVisor('0');
end;
procedure TForm1.um_btnClick(Sender: TObject);
begin
visor_txt.Text:= addVisor('1');
end;
procedure TForm1.dois_btnClick(Sender: TObject);
begin
visor_txt.Text:= addVisor('2');
end;
procedure TForm1.tres_btnClick(Sender: TObject);
begin
visor_txt.Text:= addVisor('3');
end;
procedure TForm1.quatro_btnClick(Sender: TObject);
begin
visor_txt.Text:= addVisor('4');
end;
procedure TForm1.cinco_btnClick(Sender: TObject);
begin
visor_txt.Text:= addVisor('5');
end;
procedure TForm1.seis_btnClick(Sender: TObject);
begin
visor_txt.Text:= addVisor('6');
end;
procedure TForm1.sete_btnClick(Sender: TObject);
begin
visor_txt.Text:= addVisor('7');
end;
procedure TForm1.oito_btnClick(Sender: TObject);
begin
visor_txt.Text:= addVisor('8');
end;
procedure TForm1.nove_btnClick(Sender: TObject);
begin
visor_txt.Text:= addVisor('9');
end;
procedure TForm1.ponto_btnClick(Sender: TObject);
begin
visor_txt.Text:= addVisor(',');
end;
procedure TForm1.adicao_btnClick(Sender: TObject);
begin
visor_txt.Text:= operacao(1);
end;
procedure TForm1.sub_btnClick(Sender: TObject);
begin
visor_txt.Text:= operacao(2);
end;
procedure TForm1.multi_btnClick(Sender: TObject);
begin
visor_txt.Text:= operacao(3);
end;
procedure TForm1.divisao_btnClick(Sender: TObject);
begin
visor_txt.Text:= operacao(4);
end;
procedure TForm1.igual_btnClick(Sender: TObject);
begin
visor_txt.Text:= mostraResultado();
end;
procedure TForm1.raiz_btnClick(Sender: TObject);
var
raiz: double;
condicao: string;
begin
condicao:= visor_txt.Text;
if condicao <> '' then
begin
raiz:= StrToFloat(visor_txt.Text);
raiz:= sqrt(raiz);
visor_txt.Text:= FloatToStr(raiz);
verif:= false;
op:= 0;
end;
end;
procedure TForm1.limpar_btnClick(Sender: TObject);
begin
visor_txt.Text:= '';
num1:= 0;
num2:= 0;
op:= 0;
verif2:= false;
end;
procedure TForm1.bks_btnClick(Sender: TObject);
var
s: string;
tamanho: integer;
begin
s:= visor_txt.Text;
tamanho:= Length(s);
Delete(s,tamanho,1);
visor_txt.Text:= s;
end;
end.
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
visor_txt: TEdit;
sete_btn: TButton;
quatro_btn: TButton;
um_btn: TButton;
zero_btn: TButton;
oito_btn: TButton;
cinco_btn: TButton;
dois_btn: TButton;
ponto_btn: TButton;
nove_btn: TButton;
seis_btn: TButton;
tres_btn: TButton;
igual_btn: TButton;
multi_btn: TButton;
sub_btn: TButton;
adicao_btn: TButton;
bks_btn: TButton;
limpar_btn: TButton;
raiz_btn: TButton;
divisao_btn: TButton;
Panel1: TPanel;
procedure zero_btnClick(Sender: TObject);
procedure um_btnClick(Sender: TObject);
procedure dois_btnClick(Sender: TObject);
procedure tres_btnClick(Sender: TObject);
procedure quatro_btnClick(Sender: TObject);
procedure cinco_btnClick(Sender: TObject);
procedure seis_btnClick(Sender: TObject);
procedure sete_btnClick(Sender: TObject);
procedure oito_btnClick(Sender: TObject);
procedure nove_btnClick(Sender: TObject);
procedure ponto_btnClick(Sender: TObject);
procedure adicao_btnClick(Sender: TObject);
procedure sub_btnClick(Sender: TObject);
procedure multi_btnClick(Sender: TObject);
procedure divisao_btnClick(Sender: TObject);
procedure igual_btnClick(Sender: TObject);
procedure raiz_btnClick(Sender: TObject);
procedure limpar_btnClick(Sender: TObject);
procedure bks_btnClick(Sender: TObject);
private
function operacao(operacao: integer): string;
function addVisor(btn: string): string;
function mostraResultado(): string;
public
{ Public declarations }
end;
var
Form1: TForm1;
num1, num2: double;
num: string;
op: integer;
verif: boolean = false;
verif2: boolean = false;
(*legenda: '+' = 1 '-' = 2 '*' = 3 '/' = 4*)
implementation
{$R *.dfm}
(*Funções*)
function TForm1.operacao(operacao: integer): string;
begin
if verif2 = true then
begin
if op > 0 then
begin
num2:= StrToFloat(visor_txt.Text);
case op of
1: num1:= num1 + num2;
2: num1:= num1 - num2;
3: num1:= num1 * num2;
4: num1:= num1 / num2;
end;
op := operacao;
verif:= true;
Result:= FloatToStr(num1);
verif2:= false;
exit;
end
else
num1:= StrToFloat(visor_txt.Text);
op := operacao;
verif2:= false;
Result:= '';
end;
end;
function TForm1.addVisor(btn: string): string;
begin
if verif = true then
begin
visor_txt.Text:= '';
verif:= false;
end;
Result:= visor_txt.Text + btn;
verif2:= true;
end;
function TForm1.mostraResultado(): string;
begin
if op > 0 then
begin
num2:= StrToFloat(visor_txt.Text);
case op of
1: Result:= FloatToStr(num1 + num2);
2: Result:= FloatToStr(num1 - num2);
3: Result:= FloatToStr(num1 * num2);
4: Result:= FloatToStr(num1 / num2);
end;
verif:= false;
op:= 0;
end;
end;
procedure TForm1.zero_btnClick(Sender: TObject);
begin
visor_txt.Text:= addVisor('0');
end;
procedure TForm1.um_btnClick(Sender: TObject);
begin
visor_txt.Text:= addVisor('1');
end;
procedure TForm1.dois_btnClick(Sender: TObject);
begin
visor_txt.Text:= addVisor('2');
end;
procedure TForm1.tres_btnClick(Sender: TObject);
begin
visor_txt.Text:= addVisor('3');
end;
procedure TForm1.quatro_btnClick(Sender: TObject);
begin
visor_txt.Text:= addVisor('4');
end;
procedure TForm1.cinco_btnClick(Sender: TObject);
begin
visor_txt.Text:= addVisor('5');
end;
procedure TForm1.seis_btnClick(Sender: TObject);
begin
visor_txt.Text:= addVisor('6');
end;
procedure TForm1.sete_btnClick(Sender: TObject);
begin
visor_txt.Text:= addVisor('7');
end;
procedure TForm1.oito_btnClick(Sender: TObject);
begin
visor_txt.Text:= addVisor('8');
end;
procedure TForm1.nove_btnClick(Sender: TObject);
begin
visor_txt.Text:= addVisor('9');
end;
procedure TForm1.ponto_btnClick(Sender: TObject);
begin
visor_txt.Text:= addVisor(',');
end;
procedure TForm1.adicao_btnClick(Sender: TObject);
begin
visor_txt.Text:= operacao(1);
end;
procedure TForm1.sub_btnClick(Sender: TObject);
begin
visor_txt.Text:= operacao(2);
end;
procedure TForm1.multi_btnClick(Sender: TObject);
begin
visor_txt.Text:= operacao(3);
end;
procedure TForm1.divisao_btnClick(Sender: TObject);
begin
visor_txt.Text:= operacao(4);
end;
procedure TForm1.igual_btnClick(Sender: TObject);
begin
visor_txt.Text:= mostraResultado();
end;
procedure TForm1.raiz_btnClick(Sender: TObject);
var
raiz: double;
condicao: string;
begin
condicao:= visor_txt.Text;
if condicao <> '' then
begin
raiz:= StrToFloat(visor_txt.Text);
raiz:= sqrt(raiz);
visor_txt.Text:= FloatToStr(raiz);
verif:= false;
op:= 0;
end;
end;
procedure TForm1.limpar_btnClick(Sender: TObject);
begin
visor_txt.Text:= '';
num1:= 0;
num2:= 0;
op:= 0;
verif2:= false;
end;
procedure TForm1.bks_btnClick(Sender: TObject);
var
s: string;
tamanho: integer;
begin
s:= visor_txt.Text;
tamanho:= Length(s);
Delete(s,tamanho,1);
visor_txt.Text:= s;
end;
end.
Talvez devesse comentar pra facilitar mais to ocupado com uma outra coisa ai não deu tempo
obrigado quem pode ajudar...