AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Probleme beim programmieren eines Kapitalwertrechners
Thema durchsuchen
Ansicht
Themen-Optionen

Probleme beim programmieren eines Kapitalwertrechners

Ein Thema von Hellraizer · begonnen am 3. Jan 2009 · letzter Beitrag vom 3. Jan 2009
Antwort Antwort
Seite 1 von 2  1 2      
Hellraizer

Registriert seit: 18. Dez 2008
Ort: NRW
28 Beiträge
 
Delphi 2007 Professional
 
#1

Probleme beim programmieren eines Kapitalwertrechners

  Alt 3. Jan 2009, 13:09
Hallo zusammen.
Bin dabei ein Kapitalwertrechenr zu schreiben und mein Quelltext ist folgender:

Delphi-Quellcode:
unit Kapitalwertberechnung;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, math;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    BitBtn1: TBitBtn;
    Button1: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);


  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}



procedure TForm1.FormCreate(Sender: TObject);
begin
  self.memo1.Text:=('');
end;

procedure TForm1.Button1Click(Sender: TObject);
var summe, zinssatz, z, zahlungen: real;
i, n: integer;



begin
  if edit1.text=('') then
    begin
      showmessage ('Bitte Zinssatz eingeben.');
      exit
    end;
    if memo1.lines.strings[0]=('') then
    begin
      showmessage ('Bitte Zahlung eingeben.');
      exit;
    end;
  i:=0;
  zahlungen:=0;
  summe:=0;
  zinssatz:=strtofloat(edit1.text);
   while (memo1.lines.strings[i]<>('')) do
    begin
      i:=i+1;
    end;
  n:=i;
  z:=1+zinssatz/100;
  z:=z*power(1/z,i);
  while n>0 do
    begin
      zahlungen:=zahlungen+strtofloat(memo1.Lines.Strings[n]);
      n:=n-1;
    end;
  summe:=zahlungen*z;
  self.edit2.text:=floattostr(summe);

end;
end.
Das Problem ist das ich die Werte die in den Lines des Memo stehen addieren muss. Leider funktioniert meine Vorgehensweise nicht so recht.

Bitte helft mir ich stehe gerne zu Rückfragen bereit
MFG Kevin
  Mit Zitat antworten Zitat
Klaus01
Online

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Probleme beim programmieren eines Kapitalwertrechners

  Alt 3. Jan 2009, 13:17
Hallo,

versuche mal diesen Passus:
Delphi-Quellcode:
n:=i;
while n>0 do
  begin
    zahlungen:=zahlungen+strtofloat(memo1.Lines.Strings[n]);
    n:=n-1;
  end;
durch diesen auszutauschen.
Delphi-Quellcode:
zahlungen:=0;
for n:=0 to memo1.lines.count -1 do
  if memo1.Lines.Strings[n] <> 'then
    zahlungen:=zahlungen + strToFloat(memo1.lines.Strings[n]);
Vielleicht kannst Du noch schreiben, was an Deiner Vorgehensweise nicht funktionert.

Im Memo sind da pro Zeile die Einzahlungen eines Jahres eingetragen.
Dann würde ja auch noch ein Zinseszins Effekt eintreten.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Probleme beim programmieren eines Kapitalwertrechners

  Alt 3. Jan 2009, 13:18
Zitat von Hellraizer:
Leider funktioniert meine Vorgehensweise nicht so recht.
Eine etwas verständlichere Fehlerbeschreibung was nicht funktioniert wäre nicht schlecht. Irgendeine Fehlermeldung oder kommt nicht das raus, was du erwartest?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Probleme beim programmieren eines Kapitalwertrechners

  Alt 3. Jan 2009, 13:20
Außerdem solltest Du Logik und Darstellung trennen, d.h. die Berechnung in eine eigene Funktion auslagern, die dann vom Button (ggf. mit entsprechenden Parametern) aufgerufen wird.

P.S.: Willkommen in der DP
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Hellraizer

Registriert seit: 18. Dez 2008
Ort: NRW
28 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Probleme beim programmieren eines Kapitalwertrechners

  Alt 3. Jan 2009, 13:22
also so wie ich es hatte kommt da '" is not is valid floating pointvalue'.
ich probier mal deinen Vorschlag Klaus
danke
  Mit Zitat antworten Zitat
Hellraizer

Registriert seit: 18. Dez 2008
Ort: NRW
28 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Probleme beim programmieren eines Kapitalwertrechners

  Alt 3. Jan 2009, 13:23
wie trennt man Logik und Darstellung?
einfach eine Prozedur schreiben, die vom Button.click aufgerufen wird?
danke für das willkommen
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Probleme beim programmieren eines Kapitalwertrechners

  Alt 3. Jan 2009, 13:28
Kleines Beispiel (soll die Summe der in Stringliste übergebenen Zahlen berechnen):
Delphi-Quellcode:
function MySum(const sl: TStrings): Extended;
var i: integer;
begin
  Result := 0;
  for i := 0 to Pred(sl.Count) do
    Result := Result + StrToFloatDef(sl[i],0);
end;
Ein Aufruf könnte dann so aussehen:
Delphi-Quellcode:
procedure TFormWuppdi.ButtonBlaClick(Sender: TObject);
begin
  ShowMessage(FloatToStr(MySum(ListBoxBlubb.Items)));
end;
[edit] Tippfehler, der Parametertyp muss natürlich TStrings heißen. [/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Hellraizer

Registriert seit: 18. Dez 2008
Ort: NRW
28 Beiträge
 
Delphi 2007 Professional
 
#8

Re: Probleme beim programmieren eines Kapitalwertrechners

  Alt 3. Jan 2009, 13:37
oh.. ja ^^ hab ich eigentliich vergessen zu erwähnen das ich inner 11 bin und siet anfang des Jahres im Informatik-Kurs programmiere und seit 3Monaten mit Delphi?
deshalb dauerts so lange bis ich zurückschreibe. muss erst euere Beiträge verstehn.
Das mit Logik und so trennen merk ich mir für die nächsten Aufgaben, hab noch 10 die nicht minder schwierig sind für mich
aber zum thema:

Delphi-Quellcode:
  
for n:=0 to memo1.lines.count -1 do
if memo1.Lines.Strings[n] <> 'then
zahlungen:=zahlungen + strToFloat(memo1.lines.Strings[n]);
das heißt doch:
um auf n=0 zu kommen zähle die memo.lines solange um 1 runter bis n=0 ist.
oder?

also mein Ziel ist es die Werte der einzelnen Lines im Memo zu addieren.
Das ganze soll diese Rechung wiederspiegeln:
Kapitalwert=Summe der Zahlung in Periode i *(1+Zinssatz/100)^-i
Der Kapitalwert soll ausgegeben werden im Edit2 Feld. Eingeben wird der Zinssatz in Edit1.
In Memo1 werden pro Line die Zahlungen eingeben, negativ oder positiv.
Line 0 soll i=0 sein, line 10 also i=10.
öhm? hilft euch das mir das zu erklären bzw beim problem zu helfen?
danke für eure zeit
  Mit Zitat antworten Zitat
Klaus01
Online

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#9

Re: Probleme beim programmieren eines Kapitalwertrechners

  Alt 3. Jan 2009, 13:40
.. die
for n:=0 to memo1.lines.count -1
Schleife fängt bei 0 und zählt dann bis zum Ende
des Memofeldes hoch.
Die Zeilen eines Memo sind 0 indiziert, d.h.
sie fangen bei 0 an und enden bei Zeilenanzahl -1.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: Probleme beim programmieren eines Kapitalwertrechners

  Alt 3. Jan 2009, 13:44
Wenn man es als While-Schleife umschreibt, wird es vielleicht etwas klarer.
Delphi-Quellcode:
n := 0; //wir beginnen bei Index 0 (= erste Zeile)
while n < Memo1.Lines.Count do
  begin
    if Memo1.Lines[n] <> 'then
      zahlungen:=zahlungen + strToFloat(memo1.lines[n]);
    n := n + 1; //n hochzählen für nächste Zeile
  end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:53 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz