Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   Taschenrechner mit Proceduren. Probleme beim Diviieren (https://www.delphipraxis.net/150893-taschenrechner-mit-proceduren-probleme-beim-diviieren.html)

Waschbaerpelz 29. Apr 2010 19:04


Taschenrechner mit Proceduren. Probleme beim Diviieren
 
Hier mein Text es hängt nur an der Division:

type
TForm1 = class(TForm)
Edit1: TEdit;
Label1: TLabel;
Button1: TButton;
Edit2: TEdit;
Label2: TLabel;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Label3: TLabel;
Edit3: TEdit;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
procedure eingabe(x,y: integer);
procedure addiere(x,y: integer; z:integer);
procedure ausgabe(var z: integer);

procedure subtrahiere(x,y: integer; var z:integer);

procedure multipliziere(x,y: integer; var z:integer);

procedure eingabe2(x,y: real; var z: real);
procedure dividiere(x,y: real; var z: real);
procedure ausgabe2(var z: real);
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.eingabe(x,y: integer);
begin
x:= StrToInt(edit1.text);
y:= StrToInt(edit2.text);
end;


procedure TForm1.addiere(x,y: integer; z:integer);
begin
z:=x+y;
end;


procedure TForm1.ausgabe(var z: integer);
begin
edit3.text:= InttoStr(z);
end;

procedure TForm1.Button1Click(Sender: TObject);
var a,b,c: integer;
begin
eingabe(a,b);
addiere(a,b,c);
ausgabe(c);
end;




procedure TForm1.subtrahiere(x,y: integer; var z: integer);
begin
z:=x-y;
end;

procedure TForm1.Button2Click(Sender: TObject);
var a,b,c: integer;
begin
eingabe(a,b);
subtrahiere(a,b,c);
ausgabe(c);
end;


procedure TForm1.multipliziere(x,y: integer; var z:integer);
begin
z:=x*y;
end;

procedure TForm1.Button3Click(Sender: TObject);
var a,b,c: integer;
begin
eingabe(a,b);
multipliziere(a,b,c);
ausgabe(c);
end;


procedure TForm1.eingabe2(x,y: real; var z: real);
begin
begin
y := StrToFloat (Edit2.text);
x := StrToFloat (Edit1.text);
end;

procedure TForm1.dividieren(x,y: real; var z: real);
begin
z:=x/y;
end;

procedure TForm1.ausgabe2(var z: real);
begin
edit3.text:= floattostr(z);
end;

procedure TForm1.Button4Click(Sender: TObject);
var a,b,c: real;
begin
eingabe2(a,b);
dividiere(a,b,c);
ausgabe2(c);
end;

end.


Fehlermeldung: [Fehler] Unit1.pas(113): Anweisung erwartet, aber 'PROCEDURE' gefunden

Danke im Voraus

Medium 29. Apr 2010 19:08

Re: Taschenrechner mit Proceduren. Probleme beim Diviieren
 
Zitat:

Zitat von Waschbaerpelz
procedure TForm1.eingabe2(x,y: real; var z: real);
begin <<--
begin <<--
y := StrToFloat (Edit2.text);
x := StrToFloat (Edit1.text);
end;

Eines von den beiden weg. Und Code künftig bitte in [delphi ]-Tags :)

Waschbaerpelz 29. Apr 2010 19:23

Re: Taschenrechner mit Proceduren. Probleme beim Diviieren
 
Hallo danke für die schnelle Antwort habe das begin weg gemacht jetzt taucht nut noch diese fehlermeldung auf

[Fehler] Unit1.pas(125): Nicht genügend wirkliche Parameter

Noedel 29. Apr 2010 19:30

Re: Taschenrechner mit Proceduren. Probleme beim Diviieren
 
wenn ich das richtig sehe, hast du im buttonClick geschrieben "dividiere" und im gelieferten Programmtext ist von "dividieren" ... Rufst du eine zweite Funktion auf, die dividieren sollte? Vielleicht liegts daran...

Waschbaerpelz 29. Apr 2010 19:39

Re: Taschenrechner mit Proceduren. Probleme beim Diviieren
 
Habe es soweit in den Griff bekommen und das Programm startet jetzt. Leider kommt dann, wenn ich dividieren möchte folgende Fehlermeldung: Gleitkommaüberlauf!

Das Programm sieht folgender Maßen aus:

Delphi-Quellcode:
type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Label1: TLabel;
    Button1: TButton;
    Edit2: TEdit;
    Label2: TLabel;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Label3: TLabel;
    Edit3: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
  private
    procedure eingabe(x,y: integer);
    procedure addiere(x,y: integer; z:integer);
    procedure ausgabe(var z: integer);

    procedure subtrahiere(x,y: integer; var z:integer);

    procedure multipliziere(x,y: integer; var z:integer);

    procedure eingabe2(x,y: real);
    procedure dividiere(x,y: real; var z: real);
    procedure ausgabe2(var z: real);
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.eingabe(x,y: integer);
begin
x:= StrToInt(edit1.text);
y:= StrToInt(edit2.text);
end;


procedure TForm1.addiere(x,y: integer; z:integer);
begin
z:=x+y;
end;


procedure TForm1.ausgabe(var z: integer);
begin
edit3.text:= InttoStr(z);
end;

procedure TForm1.Button1Click(Sender: TObject);
var a,b,c: integer;
begin
eingabe(a,b);
addiere(a,b,c);
ausgabe(c);
end;




procedure TForm1.subtrahiere(x,y: integer; var z: integer);
begin
z:=x-y;
end;

procedure TForm1.Button2Click(Sender: TObject);
var a,b,c: integer;
begin
eingabe(a,b);
subtrahiere(a,b,c);
ausgabe(c);
end;


procedure TForm1.multipliziere(x,y: integer; var z:integer);
begin
z:=x*y;
end;

procedure TForm1.Button3Click(Sender: TObject);
var a,b,c: integer;
begin
eingabe(a,b);
multipliziere(a,b,c);
ausgabe(c);
end;


procedure TForm1.eingabe2(x,y: real);
begin
x := StrToFloat (Edit1.text);
y := StrToFloat (Edit2.text);
end;

procedure TForm1.dividiere(x,y: real; var z: real);
begin
z:=x/y;
end;

procedure TForm1.ausgabe2(var z: real);
begin
edit3.text:= floattostr(z);
end;

procedure TForm1.Button4Click(Sender: TObject);
var a,b,c: real;
begin
eingabe2(a,b);
dividiere(a,b,c);
ausgabe2(c);
end;

end.

himitsu 29. Apr 2010 19:41

Re: Taschenrechner mit Proceduren. Probleme beim Diviieren
 
Dann schau dir doch mal genau an, welche Parameter dein eingabe2 verlangt
und was du da nur angibst.

Code:
procedure TForm1.eingabe2(x,y: real; [b]var z: real[/b]);
Code:
eingabe2(a,b);

Waschbaerpelz 29. Apr 2010 19:46

Re: Taschenrechner mit Proceduren. Probleme beim Diviieren
 
Warum eingabe2 verlangt doch bei mir nur 2 Parameter?

Delphi-Quellcode:
procedure TForm1.eingabe2(x,y: real);
Delphi-Quellcode:
eingabe2(a,b);

Luckie 29. Apr 2010 19:48

Re: Taschenrechner mit Proceduren. Probleme beim Diviieren
 
Und welche Werte gibst du da ein? Und welche Werte kommen in der Prozedur an?

Des Weiteren hilft manchmal schon eine saubere Formatierung des Quellcode, um Fehler zu finden oder zu vermeiden.

Noedel 29. Apr 2010 19:50

Re: Taschenrechner mit Proceduren. Probleme beim Diviieren
 
o
Zitat:

Zitat von Luckie
Und welche Werte gibst du da ein? Und welche Werte kommen in der Prozedur an?

Des Weiteren hilft manchmal schon eine saubere Formatierung des Quellcode, um Fehler zu finden oder zu vermeiden.

... oder auch mal ein etwas gekürzter text. so viele zeichen für einen taschenrechner mit den 4 Grundrechenarten Oo

himitsu 29. Apr 2010 19:54

Re: Taschenrechner mit Proceduren. Probleme beim Diviieren
 
Jetzt, aber vorhin nicht
Zitat:

Zitat von Waschbaerpelz
Hallo danke für die schnelle Antwort habe das begin weg gemacht jetzt taucht nut noch diese fehlermeldung auf

[Fehler] Unit1.pas(125): Nicht genügend wirkliche Parameter


Aufgrund einiger Netzwerkprobleme wurde es hier nicht sofort versendet.

Zitat:

Zitat von Luckie
Des Weiteren hilft manchmal schon eine saubere Formatierung des Quellcode, um Fehler zu finden oder zu vermeiden.

Jupp, vorallem bei den 2 Begin's wäre es praktisch sofort aufgefallen.

Zitat:

Zitat von Luckie
Und welche Werte kommen in der Prozedur an?

Sowas nennt man Debuggen und du weißt doch, daß keiner gerne sowas macht.

@Noedel:
Das ist halt mehr eine Übung zum Lernen einiger OOP-Regeln > verteile Aufgaben


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:14 Uhr.
Seite 1 von 2  1 2      

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