Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Zählschleife (https://www.delphipraxis.net/104926-zaehlschleife.html)

foerster7892 12. Dez 2007 21:58


Zählschleife
 
Kann mir bitte jemand sagen wo der Fehler ist

Delphi-Quellcode:
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;
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
Danke im Vorraus

taaktaak 12. Dez 2007 22:00

Re: Zählschleife
 
Was hast du denn für einen Fehler?

// edit : da sind 'ne Menge Unklarheiten :stupid:

mkinzler 12. Dez 2007 22:01

Re: Zählschleife
 
Lass das repeat...until weg den es erzeugt ne Endlosschleife. Zudem macht das For das ja schon

foerster7892 12. Dez 2007 22:03

Re: Zählschleife
 
Dann komt der Fehler Decleration expected but end of file found

Martin K 12. Dez 2007 22:04

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.

foerster7892 12. Dez 2007 22:06

Re: Zählschleife
 
Danke für deine Hilfe aber ich bin kein Fachmann kannst du bitte genauer erklären

taaktaak 12. Dez 2007 22:06

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)

foerster7892 12. Dez 2007 22:11

Re: Zählschleife
 
Delphi-Quellcode:
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.
sieht jetzt so aus funktioniert aber immer noch nich

Martin K 12. Dez 2007 22:12

Re: Zählschleife
 
Hallo, ich denke die letzte Prozedur sollte so aussehen:
Delphi-Quellcode:
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;
Ist es das was du meinst?

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

mkinzler 12. Dez 2007 22:12

Re: Zählschleife
 
begin;


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:41 Uhr.
Seite 1 von 3  1 23      

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