Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Kreditendwert wird negativ (https://www.delphipraxis.net/108420-kreditendwert-wird-negativ.html)

GericasS 13. Feb 2008 11:23


Kreditendwert wird negativ
 
Gute Morgen nocheinmal,

ich weiß nicht genau ob es hier auch so geregelt ist, 1 Frage 1 Topic wie beim DelphiForum ?
Aber nach meinem gmv bin ich schon der Meinung :-D


Nach der super Hilfe von eben gerade, funktioniert alles super !

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  i : Integer ;
  kredit,zinsen,zinssatz,rate,ende : real ;
begin
  kredit := StrToFloat(edit1.Text);
  rate := StrToFloat(edit2.Text);
  zinssatz := StrToFloat(edit3.Text)/100;
  i := 0 ;
  while kredit > 0 do
    begin
      inc(i);
    StringGrid1.RowCount:=(i+1);
  zinsen := kredit*zinssatz/12 ;
  ende := kredit-rate+zinsen ;
    StringGrid1.Cells[0,i]:=IntToStr(i);
    StringGrid1.Cells[1,i]:=FloatToStrF(kredit,ffFixed,10,2);
    StringGrid1.Cells[2,i]:=FloatToStrF(zinsen,ffFixed,10,2);
    StringGrid1.Cells[3,i]:=FloatToStrF(ende,ffFixed,10,2);
  kredit:=ende ;
      if ende < 0 then break ;
    Panel1.Caption := IntToStr(i);
      Panel2.Caption := FloatToStr(i/12);
      Panel4.Caption := FloatToStrF(ende,ffFixed,10,2);
Jetzt besteht nurnoch das folgende Problem, wenn meine Rechnunug den letzten Monat erreicht ( also wenn der Kredit 0 € erreicht ), zeigt das StringGrid noch einen weiteren Monat an, wo der Kreditbetrag (ende) negativ wird...
Dies hab ich schon versucht zu unterbinden in dem ich folgendes gemacht habe...

Delphi-Quellcode:
if ende < 0 then kredit := 0
Was aber leider entweder den effekt hatte, das sich gar nichts tat oder in meinem Panel der anzeigt was noch zu zahlen sei im letzten montag 0 stand.

Ich hoffe ich konnte das Problem verständlich schildern :|


LG

GericasS

stahli 13. Feb 2008 11:38

Re: Kreditendwert wird negativ
 
Hi GericasS,

ganz verstanden habe ich es nicht, aber vielleicht hilft Dir so etwas:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  i : Integer ;
  kredit,zinsen,zinssatz,rate,ende : real ;
begin
  kredit := StrToFloat(edit1.Text);
  rate := StrToFloat(edit2.Text);
  zinssatz := StrToFloat(edit3.Text)/100;
  i := 0 ;
  Ende := 0; // <--
  while (Kredit > 0) and (Ende >= 0) do // <--
  begin
    inc(i);
    StringGrid1.RowCount:=(i+1);
    zinsen := kredit*zinssatz/12 ;
    ende := kredit-rate+zinsen ;
    StringGrid1.Cells[0,i]:=IntToStr(i);
    StringGrid1.Cells[1,i]:=FloatToStrF(kredit,ffFixed,10,2);
    StringGrid1.Cells[2,i]:=FloatToStrF(zinsen,ffFixed,10,2);
    StringGrid1.Cells[3,i]:=FloatToStrF(ende,ffFixed,10,2);
    kredit:=ende ;
    if ende < 0 then break ; // <-- das kann dann raus
    Panel1.Caption := IntToStr(i);
    Panel2.Caption := FloatToStr(i/12);
    Panel4.Caption := FloatToStrF(ende,ffFixed,10,2);
    ...
stahli

GericasS 13. Feb 2008 11:47

Re: Kreditendwert wird negativ
 
Hey stahli,

ersteinmal danke für die schnelle hilfe, aber...
das hat bei mir den Effekt, das es einen Wert in dem Panel anzeigt, aber dieser ist wieder negativ.
Gibt es keine Möglichkeit, sobald der Wert von "ende" < 0 ist einfach aufzuhören und den letzten Wert von der Variable Kredit auszugeben ?

Ich hoffe dies erläutert mein Problem besser :dance:



LG

stahli 13. Feb 2008 11:57

Re: Kreditendwert wird negativ
 
Ich weiß ja nicht, was Du im Rest Deines Begin-End-Blockes noch machst...

Du könntest evtl. eine Hilfsvariable einführen:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  i : Integer ;
  kredit,zinsen,zinssatz,rate,ende : real ;
  NextEnde: Real; // <--
begin
  kredit := StrToFloat(edit1.Text);
  rate := StrToFloat(edit2.Text);
  zinssatz := StrToFloat(edit3.Text)/100;
  i := 0 ;
  NextEnde := 0; // <-- 
  while (Kredit > 0) and (NextEnde >= 0) do // <-- 
  begin
    inc(i);
    StringGrid1.RowCount:=(i+1);
    zinsen := kredit*zinssatz/12 ;
    ende := kredit-rate+zinsen ;
    StringGrid1.Cells[0,i]:=IntToStr(i);
    StringGrid1.Cells[1,i]:=FloatToStrF(kredit,ffFixed,10,2);
    StringGrid1.Cells[2,i]:=FloatToStrF(zinsen,ffFixed,10,2);
    StringGrid1.Cells[3,i]:=FloatToStrF(ende,ffFixed,10,2);
    kredit:=ende ;
    if ende < 0 then break ; // <-- das kann dann raus
    Panel1.Caption := IntToStr(i);
    Panel2.Caption := FloatToStr(i/12);
    Panel4.Caption := FloatToStrF(ende,ffFixed,10,2);
    ...
    NextEnde := ... // <-- schon mal schauen, was als nächstes kommt
  end; // <-- nächste While-Prüfung
Evtl. kannst Du dafür auch die Variable Kredit nehmen, müsstest sie aber dann vor dem While initialisieren (0 zuweisen).

stahli

Klaus01 13. Feb 2008 12:26

Re: Kreditendwert wird negativ
 
Hallo,

eventuell könnte man es auch so angehen:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  i : Integer ;
  kredit,zinsen,zinssatz,rate : real ;

begin
  kredit := StrToFloat(edit1.Text);
  rate := StrToFloat(edit2.Text);
  zinssatz := StrToFloat(edit3.Text)/100;
  i := 0 ;

  while (Kredit - rate) > 0 do
  begin
    inc(i);
    zinsen := kredit*zinssatz/12 ;
    kredit := kredit-rate+zinsen ;
    Memo1.Lines.Add(format('%.2d %5.2f  %5.2f',[i,kredit,zinsen])); // das hier war nur für mich zum Testen

    Panel1.Caption := IntToStr(i);
    Panel2.Caption := FloatToStr(i/12);
    Panel4.Caption := FloatToStrF(kredit,ffFixed,10,2);
  end;
end;
Grüße
Klaus

GericasS 13. Feb 2008 12:38

Re: Kreditendwert wird negativ
 
Zitat:

Zitat von Klaus01
Hallo,

eventuell könnte man es auch so angehen:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  i : Integer ;
  kredit,zinsen,zinssatz,rate : real ;

begin
  kredit := StrToFloat(edit1.Text);
  rate := StrToFloat(edit2.Text);
  zinssatz := StrToFloat(edit3.Text)/100;
  i := 0 ;

  while (Kredit - rate) > 0 do
  begin
    inc(i);
    zinsen := kredit*zinssatz/12 ;
    kredit := kredit-rate+zinsen ;
    Memo1.Lines.Add(format('%.2d %5.2f  %5.2f',[i,kredit,zinsen])); // das hier war nur für mich zum Testen

    Panel1.Caption := IntToStr(i);
    Panel2.Caption := FloatToStr(i/12);
    Panel4.Caption := FloatToStrF(kredit,ffFixed,10,2);
  end;
end;
Grüße
Klaus


vielen vielen Danke Klaus hat super funktioniert :mrgreen:

LG GericasS


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:54 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz