Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Thiago_chagas

Parar um programa

Recommended Posts

Boa Tarde sou iniciante ainda em Delphi fiz um programa para fazer calculo aqui da area de um riangulo, e fiz uma consistencia para ele nao aceitar Numeros negativo ou letras e , e etc , eu colokei dentro do Evento BotãoVar ladoab, ladobc,ladoac: integer;begin ladoab:= 0; ladobc:= 0; ladoac:= 0; try ladoab := strtoint(txtab.text); ladobc := strtoint(txtbc.Text); ladoac := strtoint(txtac.Text); If (ladoab) or (ladobc) or (ladoac) <= 0 then begin showMessage('numero negativo ou igual a Zero...'); txtab.setfocus; exit; end except showMessage('você deve digitar um numero...'); txtab.setfocus; exit; end;e Logo apos ele faria o calculo se numero fossem todos positivos, porem mesmo assim ele continua com calculo gostaria de saber se AH algum comendo que para a execução do programa ou fexa o mesmo, ja jguei ate uma procedure isso tudo e nda Adiantou, agradeço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Basta você alterar a sua validação, fazendo algo do tipo:

 

if ((ladoab <= 0) or (ladobc <= 0) or (ladoac <= 0))  then

Ficando:

 

var	ladoab, ladobc,ladoac: integer;beginladoab:=0;ladobc:=0;ladoac:=0;try	ladoab:=strtoint(txtab.text);	ladobc:=strtoint(txtbc.Text);	ladoac:=strtoint(txtac.Text);	if ((ladoab <= 0) or (ladobc <= 0) or (ladoac <= 0))  then		begin		showMessage('numero negativo ou igual a Zero...');		txtab.setfocus;		exit;		end;except	showMessage('você deve digitar um numero...');	txtab.setfocus;	end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Basta você alterar a sua validação, fazendo algo do tipo:

if ((ladoab <= 0) or (ladobc <= 0) or (ladoac <= 0))  then
Ficando:
var	ladoab, ladobc,ladoac: integer;beginladoab:=0;ladobc:=0;ladoac:=0;try	ladoab:=strtoint(txtab.text);	ladobc:=strtoint(txtbc.Text);	ladoac:=strtoint(txtac.Text);	if ((ladoab <= 0) or (ladobc <= 0) or (ladoac <= 0))  then		begin		showMessage('numero negativo ou igual a Zero...');		txtab.setfocus;		exit;		end;except	showMessage('você deve digitar um numero...');	txtab.setfocus;	end;
Bom cara mesmo assim agradeço melhoro a visuaização do programa, mas ainda ele conitnua calculando quandos e digita 0, 0, 0, ele da Aviso de error mas ainda calcula , gostaria que ele nao calcula-se , quando coloka numero negativo ele tb calcula ainda, gostaria de saber como faço issoNo codigo do botão analisa coloquei assim:procedure Tfrm33247.cmd_analisa_trianguloClick(Sender: TObject);varladoab,ladobc,ladoac:real;begin Begin Consistir(frm33247); ladoab:=strtofloat(txtab.text); ladobc:=strtofloat(txtbc.text); ladoac:=strtofloat(txtac.text); lblbase.caption:= floattostr (get_base(ladoab,ladobc,ladoac)); lblaltura.caption:= floattostr(get_hipotenusa(ladoab,ladobc)); lblarea.caption:= floattostr(get_area (ladoab,ladobc)); lbltipo.Caption := analisa_triangulo(ladoab, ladobc, ladoac); lbltipo.Update; carrega_imagem(); End; End;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então coloque o fonte todo do cálculo, pois somente com o que você passou testei aqui e funcionou...Não tem como eu descobrir o que vem antes e depois do seu fonte, sobre o exemplo que passou funciona tranquilo...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seu fonte com o cálculo e validação é algo do tipo assim :?

 

var	ladoab, ladobc,ladoac: integer;beginladoab:=0;ladobc:=0;ladoac:=0;try	ladoab:=strtoint(txtab.text);	ladobc:=strtoint(txtbc.Text);	ladoac:=strtoint(txtac.Text);	if ((ladoab <= 0) or (ladobc <= 0) or (ladoac <= 0))  then		begin		showMessage('numero negativo ou igual a Zero...');		txtab.setfocus;		exit;		end;	Consistir(frm33247);	ladoab:=strtofloat(txtab.text);	ladobc:=strtofloat(txtbc.text);	ladoac:=strtofloat(txtac.text);	lblbase.caption:= floattostr (get_base(ladoab,ladobc,ladoac));	lblaltura.caption:= floattostr(get_hipotenusa(ladoab,ladobc));	lblarea.caption:= floattostr(get_area (ladoab,ladobc));	lbltipo.Caption := analisa_triangulo(ladoab, ladobc, ladoac);	lbltipo.Update;	carrega_imagem();except	showMessage('você deve digitar um numero...');	txtab.setfocus;	end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seu fonte com o cálculo e validação é algo do tipo assim :?

var	ladoab, ladobc,ladoac: integer;beginladoab:=0;ladobc:=0;ladoac:=0;try	ladoab:=strtoint(txtab.text);	ladobc:=strtoint(txtbc.Text);	ladoac:=strtoint(txtac.Text);	if ((ladoab <= 0) or (ladobc <= 0) or (ladoac <= 0))  then		begin		showMessage('numero negativo ou igual a Zero...');		txtab.setfocus;		exit;		end;	Consistir(frm33247);	ladoab:=strtofloat(txtab.text);	ladobc:=strtofloat(txtbc.text);	ladoac:=strtofloat(txtac.text);	lblbase.caption:= floattostr (get_base(ladoab,ladobc,ladoac));	lblaltura.caption:= floattostr(get_hipotenusa(ladoab,ladobc));	lblarea.caption:= floattostr(get_area (ladoab,ladobc));	lbltipo.Caption := analisa_triangulo(ladoab, ladobc, ladoac);	lbltipo.Update;	carrega_imagem();except	showMessage('você deve digitar um numero...');	txtab.setfocus;	end;
Não o Consistir eh o nome da Procdure onde esta aquele Cdigo que postei primeiramente Primeiro ele faz a procedure consistir e deois fa zo resto que seria o calculo do triangulo, o problema eh nao deixar ele passar da procedure se numero for negavito, 0 ou tiver virgula , ponto virgula e ec.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Novamente.... troque <= por <.

Troquei porem ele cont calculando com Numero Negativo e com 0o que gostaria mesmo eh de algum modo , trocando pra uma function, ou algo o genero quando ele chega nessa verificação de consistencia o programa nao fosse mais execultado quando desse Numero negativo, zero ou fracionado em qualquer uma das edit

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora entendi Thiago_chagas, trsnforme em uma function, no qual lhe devolve um boolean, podendo assim fazer uma validação sobre, algo do tipo:

 

function TForm1.Consistir: boolean;var	ladoab, ladobc,ladoac: integer;	ret: boolean;beginret:=True;ladoab:=0;ladobc:=0;ladoac:=0;try	ladoab:=strtoint(txtab.text);	ladobc:=strtoint(txtbc.Text);	ladoac:=strtoint(txtac.Text);	if ((ladoab <= 0) or (ladobc <= 0) or (ladoac <= 0))  then		begin		ret:=False;		showMessage('Numero negativo ou igual a Zero...');		txtab.setfocus;		end;except	ret:=False;	showMessage('Você deve digitar um numero...');	txtab.setfocus;	end;Consistir:=ret;end;
Ficando:

 

unit Unit1;interfaceuses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, StdCtrls, Buttons;type  TForm1 = class(TForm)	txtab: TEdit;	txtbc: TEdit;	txtac: TEdit;	BitBtn1: TBitBtn;	procedure BitBtn1Click(Sender: TObject);  private	{ Private declarations }	function Consistir: boolean;  public	{ Public declarations }  end;var  Form1: TForm1;implementation{$R *.dfm}procedure TForm1.BitBtn1Click(Sender: TObject);beginif Consistir() then	begin	//Efetua o cálculo	end;end;function TForm1.Consistir: boolean;var	ladoab, ladobc,ladoac: integer;	ret: boolean;beginret:=True;ladoab:=0;ladobc:=0;ladoac:=0;try	ladoab:=strtoint(txtab.text);	ladobc:=strtoint(txtbc.Text);	ladoac:=strtoint(txtac.Text);	if ((ladoab <= 0) or (ladobc <= 0) or (ladoac <= 0))  then		begin		ret:=False;		showMessage('Numero negativo ou igual a Zero...');		txtab.setfocus;		end;except	ret:=False;	showMessage('Você deve digitar um numero...');	txtab.setfocus;	end;Consistir:=ret;end;end.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Novamente.... troque <= por <.

Troquei porem ele cont calculando com Numero Negativo e com 0o que gostaria mesmo eh de algum modo , trocando pra uma function, ou algo o genero quando ele chega nessa verificação de consistencia o programa nao fosse mais execultado quando desse Numero negativo, zero ou fracionado em qualquer uma das edit
A sua validação esta correta como <=Apenas a forma de tratar depois da validação que precisa mudar...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.