Você está na página 1de 6

ActiveDelphi .: O site do programador Delphi! :.

FAQ Pesquisar Membros Grupos Registrar Perfil Entrar e ver Mensagens Particulares Entrar Programa para clculo de impostos ActiveDelphi - ndice do Frum -> Delphi Exibir mensagem anterior :: Exibir prxima mensagem Autor Mensagem luizpapag Novato

Registrado: Sexta-Feira, 29 de Outubro de 2010 Mensagens: 39 Enviada: Sex Mai 13, 2011 4:04 pm Assunto: Programa para clculo de impostos

-------------------------------------------------------------------------------Pessoal sou iniciante dephi, estou aprendendo atravs de videoaulas do prof. Neri e do M.Jailton, resolvi desenvolver esse programinha para facilitar minha vida n o trabalho(ele faz a mesma funo do atingir meta do excel(o usurio digita o valor li quido e o programa retorna o bruto e os impostos)), mas quando compila e eu clic o no boto para calcular o programa simplesmente trava sem dar nenhuma mensagem e no faz os clculos, dai tenho que dar program reset, j tem mais de uma semana que es tou na briga com esse cdigo: e nada Cdigo: unit UCalc_IR; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Mas , ToolEdit, CurrEdit, Grids, DBGrids, DB, IBCustomDataSet, IBTable, IBDatabase, ExtCtrls,IniFiles, DBCtrls; type TfrmCalc = class(TForm) Panel1: TPanel; ibdCalc: TIBDatabase; ibtCalc: TIBTransaction; tblFaixas: TIBTable; dtsFaixas: TDataSource; tblFaixasFAIXA: TIntegerField; tblFaixasDE: TIBBCDField; tblFaixasATE: TIBBCDField; tblFaixasALIQUOTA: TIBBCDField; tblFaixasDEDUCAO: TIBBCDField; dbgTabelaIR: TDBGrid; GroupBox1: TGroupBox; cbxirrf: TChec Box; cbxinss: TChec Box; cbxiss: TChec Box;

Label1: TLabel; cedMeta: TCurrencyEdit; Panel2: TPanel; cedBruto: TCurrencyEdit; cedIR: TCurrencyEdit; cedINSS: TCurrencyEdit; cedISS: TCurrencyEdit; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; bitCalcula: TButton; Label7: TLabel; Label8: TLabel; bitAlteraTabela: TButton; Panel3: TPanel; Label9: TLabel; Label10: TLabel; edtDep: TEdit; Bevel1: TBevel; tblIndices: TIBTable; dtsIndices: TDataSource; tblIndicesID: TIntegerField; tblIndicesDEDUCAODEP: TIBBCDField; tblIndicesTETO: TIBBCDField; dbDep: TDBEdit; dbTeto: TDBEdit; Label11: TLabel; cedLiquido: TCurrencyEdit; Label12: TLabel; cedBase: TCurrencyEdit; procedure FormShow(Sender: TObject); procedure bitCalculaClic (Sender: TObject); private { Private declarations } public procedure CalculaIR; procedure CalculaINSS; procedure CalculaISS; procedure CalculaDep; procedure CalculaImpostos; procedure CalculaLiquido; { Public declarations } end; var frmCalc: TfrmCalc; liquido, bruto, baseir, meta, ir, iss, inss, teto,deducaodep, impostos : real; ndep : integer; calculaini : TIniFile; implementation {$R *.dfm} procedure TfrmCalc.CalculaDep; begin if strtoint(edtDep.Text) > 0 then

deducaodep := strtoint(edtDep.Text) * tblIndicesDEDUCAODEP.Value else deducaodep := 0; end; procedure TfrmCalc.CalculaINSS; begin if (cbxinss.Chec ed = true) and (bruto > 0) then begin inss := (bruto * 11)/100; if inss > tblIndicesTETO.Value then inss := tblIndicesTETO.Value; end else inss := 0; end; procedure TfrmCalc.CalculaIR; begin if (cbxirrf.Chec ed = True) and (bruto > 0) then begin tblFaixas.First; while not tblFaixas.Eof do begin if baseir <= tblFaixas.FieldByName('ATE').AsFloat then begin ir := (baseir * tblFaixas.FieldByName('ALIQUOTA').AsFloat)/100 - tbl Faixas.FieldByName('DEDUCAO').AsFloat; exit; end; tblFaixas.Next; end; end else ir := 0; CalculaDep; ir := ir - deducaodep; if ir <0> 0) then iss := (bruto * 2)/100 else iss := 0; end; procedure TfrmCalc.FormShow(Sender: TObject); begin cedMeta.SetFocus; tblFaixas.Open; ir := 0; inss := 0; iss := 0; bruto := 0; liquido := 0; end; procedure TfrmCalc.bitCalculaClic (Sender: TObject); begin if cedMeta.Value > 0 then begin meta := cedMeta.Value;

bruto := meta; CalculaLiquido; while liquido < meta do begin bruto := bruto + 0.01; CalculaLiquido; end; cedBruto.Value := bruto; cedIR.Value := ir; cedINSS.Value := inss; cedISS.Value := iss; cedLiquido.Value := liquido; cedBase.Value := baseir; end else begin cedBruto.Value := bruto; cedIR.Value := ir; cedINSS.Value := inss; cedISS.Value := iss; end; end; procedure TfrmCalc.CalculaImpostos; begin CalculaISS; CalculaINSS; baseir := bruto - inss; CalculaIR; impostos := ir + inss + iss; end; procedure TfrmCalc.CalculaLiquido; begin CalculaImpostos; Liquido := bruto - impostos; end; end. me ajudem por favor Voltar ao Topo Ghost_Rider Colaborador

Registrado: Segunda-Feira, 6 de Outubro de 2003 Mensagens: 3282 Enviada: Sex Mai 13, 2011 5:03 pm Assunto:

-------------------------------------------------------------------------------Seu programa trava provavelmente por causa dessa linha

while liquido < meta do O while entre em um loop eterno, fazendo a aplicao travar, aqui ele vai continuar enquanto o liquido for menor que a meta, da uma analisada nas rotinas que altera m o valor da variavel liquido, o erro esta ai. Voltar ao Topo luizpapag Novato

Registrado: Sexta-Feira, 29 de Outubro de 2010 Mensagens: 39 Enviada: Sb Mai 14, 2011 1:25 pm Assunto:

-------------------------------------------------------------------------------Ghost_Rider escreveu: Seu programa trava provavelmente por causa dessa linha while liquido < meta do O while entre em um loop eterno, fazendo a aplicao travar, aqui ele vai continuar enquanto o liquido for menor que a meta, da uma analisada nas rotinas que altera m o valor da variavel liquido, o erro esta ai. mas depois do "while liquido < meta do" eu incremento a varivel "bruto" e executo a procedure CalculaLiquido que a seguinte Cdigo: begin CalculaImpostos; Liquido := bruto - impostos; end; a procedure CalculaImpostos a seguinte: Cdigo: begin CalculaISS; CalculaINSS; baseir := bruto - inss; CalculaIR; impostos := ir + inss + iss; end; no meu form tem 3 chec box: ISS INSS E IRRF se eu desmarco o IRRF o programa fun ciona normal mas se eu marco o IRRF para calcular o imposto de renda ele trava, no consigo achar onde t o erro, j tentei fazer esse lao com repeat e com for, mas na da d certo... se algum puder me dar uma idia fico grato[/code] Voltar ao Topo

Mostrar os tpicos anteriores: Todas as mensagens1 Dia7 Dias2 Semanas1 Ms3 Meses6 M eses1 Ano Antigas primeiroRecentes primeiro ActiveDelphi - ndice do Frum -> Delphi Todos os horrios so GMT - 3 Horas Pgina 1 de 1 Ir para: Selecione um Frum Frum ActiveDelphi----------------AvisosDelphiDelphi fo r PHPAutomao ComercialBanco de DadosRevista ActiveDelphiOff-Topic Active Delphi Automao Comercial----------------PAF-ECF-TEFNFe Enviar Mensagens Novas: Proibido. Responder Tpicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.

Powered by phpBB 2001, 2005 phpBB Group Traduzido por: Suporte phpBB