Zählschleife
Kann mir bitte jemand sagen wo der Fehler ist
Delphi-Quellcode:
Das Programm soll die Zinsen und das Neue Guthaben für ein Jahr berechnen wenn jeden Monat ein gleicher Betrag auf das Konto gezahlt wird
unit Unit4;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm4 = class(TForm) Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Button1: TButton; procedure Edit1Change(Sender: TObject); procedure Edit2Change(Sender: TObject); procedure Edit3Change(Sender: TObject); procedure Label2Click(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form4: TForm4; Startguthaben, Endguthaben, Zinsen, monatlicherBetrag, Zinssatz, laufvariable: real; a: Integer; implementation {$R *.dfm} procedure TForm4.Edit1Change(Sender: TObject); begin startguthaben := StrToFloat(Edit1.Text); end; procedure TForm4.Edit2Change(Sender: TObject); begin zinssatz := StrToFloat(Edit2.Text); end; procedure TForm4.Edit3Change(Sender: TObject); begin monatlicherBetrag := StrToFloat(Edit3.Text); end; procedure TForm4.Button1Click(Sender: TObject); begin a := 0; Zinsen := 0; For a :=1 to 12 do begin; repeat Startguthaben := Startguthaben + monatlicherBetrag; Zinsen := 1/12*Startguthaben/100*Zinssatz; until a=12; Endguthaben := Zinsen + startguthaben; Label2.Caption := FloatToStr(Endguthaben); Label1.Caption := FloatToStr(Zinsen); end; end; Danke im Vorraus |
Re: Zählschleife
Was hast du denn für einen Fehler?
// edit : da sind 'ne Menge Unklarheiten :stupid: |
Re: Zählschleife
Lass das repeat...until weg den es erzeugt ne Endlosschleife. Zudem macht das For das ja schon
|
Re: Zählschleife
Dann komt der Fehler Decleration expected but end of file found
|
Re: Zählschleife
Hallo,
Zählvariablen sollten immer lokal sein, du hast alle Variablen global, das ist nicht gut und wird zumindest bei Zählvariablen sogar vom Compiler als Fehler gemeldet. Deine Variable a: Integer müsste also in der Prozedur procedure TForm4.Button1Click(Sender: TObject); als lokale Variable stehen. |
Re: Zählschleife
Danke für deine Hilfe aber ich bin kein Fachmann kannst du bitte genauer erklären
|
Re: Zählschleife
Na, wenn dein Ausriss wirklich der GESAMTE Code ist, dann fehlt m.E. zum Schluß ein "end." Na, und dann ist a:=0 überflüssig, wenn du a gleich darauf als Schleifenzähler verwendest (a sollte auch lokal deklariert werden)
|
Re: Zählschleife
Delphi-Quellcode:
sieht jetzt so aus funktioniert aber immer noch nich
unit Unit4;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm4 = class(TForm) Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Button1: TButton; procedure Edit1Change(Sender: TObject); procedure Edit2Change(Sender: TObject); procedure Edit3Change(Sender: TObject); procedure Label2Click(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form4: TForm4; Startguthaben, Endguthaben, Zinsen, monatlicherBetrag, Zinssatz, laufvariable: real; a: Integer; implementation {$R *.dfm} procedure TForm4.Edit1Change(Sender: TObject); begin startguthaben := StrToFloat(Edit1.Text); end; procedure TForm4.Edit2Change(Sender: TObject); begin zinssatz := StrToFloat(Edit2.Text); end; procedure TForm4.Edit3Change(Sender: TObject); begin monatlicherBetrag := StrToFloat(Edit3.Text); end; procedure TForm4.Button1Click(Sender: TObject); begin Zinsen := 0; For a :=1 to 12 do begin; Startguthaben := Startguthaben + monatlicherBetrag; Zinsen := 1/12*Startguthaben/100*Zinssatz; Endguthaben := Zinsen + startguthaben; end; Label2.Caption := FloatToStr(Endguthaben); Label1.Caption := FloatToStr(Zinsen); end; end. |
Re: Zählschleife
Hallo, ich denke die letzte Prozedur sollte so aussehen:
Delphi-Quellcode:
Ist es das was du meinst?
procedure TForm4.Button1Click(Sender: TObject);
var a: Integer; // <--- hier wird die Variable lokal definiert begin Zinsen := 0; For a :=1 to 12 do begin // <-- nach dem begin Semikolon entfernt Startguthaben := Startguthaben + monatlicherBetrag; Zinsen := 1/12*Startguthaben/100*Zinssatz; end; Endguthaben := Zinsen + startguthaben; Label2.Caption := FloatToStr(Endguthaben); Label1.Caption := FloatToStr(Zinsen); end; Ach ja, und die Variable a kannst du dann oben, wo die ganzen globalen Variablen stehen weglassen ;) Hoffe ich konnte helfen... //Edit: Kommentar in den Code hinzugefügt //Edit 2: ja, das Semikolon nach dem begin sollte natürlich weg, ist mir gar nicht aufgefallen |
Re: Zählschleife
begin;
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:41 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