Ir para conteúdo
Fórum Script Brasil
  • 0

Dificuldades Em Manipular Variavéis


Guest Ricardo Lorente

Pergunta

Guest Ricardo Lorente

Bom dia a todos,

Sou novato em programação porém muito perssistente e estou precisando de ajuda para fazer um programa onde tenho um determinado valor de um produto e uma determinada porcentagem de desconto que será aplicada mês a mês automaticamente (depreciação). Mas para teste queria fazé-la minuto a minuto.

Tenho 3 Dbedits, 'valor' 'porcentagem' e 'resultado'

var

Form1: TForm1;

mês : string; //variavel que guarda o mês

valor,i: integer; //variavel que vai guardar o valor

por : integer; //variavel da porcentagem

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

begin

Table1.insert; // 'Botão' nada haver com o problema

end;

procedure TForm1.DBEdit3Click(Sender: TObject);

begin

mês:=formatdatetime('n',now); //variavel recebendo mês (no caso min só para fazer teste)

valor:=StrToInt(dbValor.Text); // recebe o valor e a porcentagem

por := strtoint(dbPor.Text);

valor:= valor-(valor div 100 * por);

dbResultado.text:=inttostr(valor); //mostra a depreciação

end;

end.

Tudo isso funciona ele faz a depreciação, porém queria fazer algum processo onde o valor seria depreciado minuto a minuto até chegar ao valor '0', alguém pode me ajudar?? aceito críticas e sugestões...pois, quero aprender

Obrigado.

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0
Guest --Jonas --

Por que não usa um For ou um timer ???

exemplo:

var 
    cont : integer;

begin

for cont := 1 to 50 do  ///  coloque um numero que o resultado chegue a zero
   begin

       mês:=formatdatetime('n',now); //variavel recebendo mês (no caso min só para fazer teste) 
       valor:=StrToInt(dbValor.Text); // recebe o valor e a porcentagem
       por := strtoint(dbPor.Text);

       valor:= valor-(valor div 100 * por); 

       dbResultado.text:=inttostr(valor); //mostra a depreciação
    end; 

end;

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Ricardo Lorente

Até ai tudo bem mas como uso um timer para executar essa rotina uma vez a cada minuto?

e como o count vai saber que precisa ser acrescido de um para refazer novamente a depreciação no minuto seguinte??

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --Jonas --

Dentro do timer fica assim:

defina o iterval do timer = 60000 que corresponde a 1 minuto; neste caso não precisa do contador cont, o proprio timer sera o contador de tempo.

procedure TForm1.Timer1Timer(Sender: TObject);
begin
    mês:=formatdatetime('n',now); //variavel recebendo mês (no caso min só para fazer teste)
    valor:=StrToInt(dbValor.Text); // recebe o valor e a porcentagem
    por := strtoint(dbPor.Text);

    valor:= valor-(valor div 100 * por);

    dbResultado.text:=inttostr(valor); //mostra a depreciação

    if valor = 0 then  // quando o valor chegar a zero ele para 
       begin
          Timer1.Enabled := false;
          exit;
       end;
end;

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Ricardo Lorente

Eu fiz isso que você me disse, porém, ele deprecio somente um vez

Ex.: 500 - 5% = 475 e não continua... Mesmo com o timer ativo...

O que faço pra ele continuar a depreciação até chegar a 0??

Obrigado...

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --Jonas --
Eu fiz isso que você me disse, porém, ele deprecio somente um vez

Ex.: 500 - 5% = 475 e não continua... Mesmo com o timer ativo...

O que faço pra ele continuar a depreciação até chegar a 0??

Obrigado...

você quer de minuto a minuto, então tem que esperar o proximo minuto para ele te dar a resposta; se aparentemente ele parou na primeira vez pode ser que o valor não esteja sendo alterado .... para reduzir o tempo, mude o interval para 1000 e veja se valor chega a zero ( vai mudar a cada segundo ) faça este mudança para saber o valor de 'valor' .... o timer so sera parado se o valor for zero caso contrario ele continuara executando

procedure TForm1.Timer1Timer(Sender: TObject);
begin
    mês:=formatdatetime('n',now); //variavel recebendo mês (no caso min só para fazer teste)
    valor:=StrToInt(dbValor.Text); // recebe o valor e a porcentagem
    por := strtoint(dbPor.Text);

    valor:= valor-(valor div 100 * por);
    showmessage(floattostr(valor));

    dbResultado.text:=inttostr(valor); //mostra a depreciação

    if valor = 0 then  // quando o valor chegar a zero ele para 
       begin
          Timer1.Enabled := false;
          exit;
       end;
end;

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Ricardo Lorente

Obrigado Jonas pela ajuda já tentei todas essas possíbilidades e descobri meu erro, era de lógica o Timer funcionou normalmente, porém mudei um pouco as coisas no meu projeto para ficar mais ágil, ao invés de depreciar uma vez por mês quero depreciar tudo de uma com um click no botão vez, ex:

valor: 100 porcentagem: 10

Depreciação: //um DBGrid mostrando a depreciação linha a linha.

Valor

linha1 100

linha2 90

linha3 81

etc...

como não sei vou tentar chutar um exemplo do que gostaria de fazer:

var

i,u : integer;

for i = 0 to 100 do

begin

dbline(u).text:= resultado; //variável que guarda o valor da conta;

u:= u+1;

end;

//quer dizer cada linha do DBGrid recebe o valor da variável resultado.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...