Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Fehler-Anzeige: Not enough actual parameters (https://www.delphipraxis.net/62428-fehler-anzeige-not-enough-actual-parameters.html)

icqgoofy 4. Feb 2006 11:24


Fehler-Anzeige: Not enough actual parameters
 
Hallo zusammen,

in Informatik sollen wir einen "Taschenrechner" mit simplen
Methoden (nur Addition/Multiplikation) schreiben.
Vorgabe ist, dass die Lösungsvariablen nicht Werteparameter
sein dürfen, sondern Varibalenparameter sein müssen.

Ich habe das Programm nach den Vorgaben des Lehrers geschrieben,
genau wie wir alle aus dem Kurs.
Doch bei uns allen kommt jener Fehler.

Hier meine Unit:

Delphi-Quellcode:
unit Unit1;

interface

[...] //hab grad die uses rausgemacht, die betreffen ja das Problem nicht

type
  TFTaschenrechner = class(TForm)
   .... //hier stehen halt die Objekte
    procedure Berechnung(rZa1,rZa2: Real; var rSum,rProd: Real);
    procedure BErgebnis_AnzeigeClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  FTaschenrechner: TFTaschenrechner;
  rSumme: Real;
  rProdukt: Real;

implementation

{$R *.dfm}

procedure TFTaschenrechner.Berechnung(rZa1,rZa2: Real; var rSum,rProd: Real);
begin
  rSum:=rZa1+rZa2;
  rProd:=rZa1*rZa2;
  rSumme:=rSum;
  rProdukt:=rProd;
end;


procedure TFTaschenrechner.BErgebnis_AnzeigeClick(Sender: TObject);
var rZahl1,rZahl2 : Real;
begin
  rZahl1:=StrToFloat(EZahl1.Text);
  rZahl2:=StrToFloat(EZahl2.Text);
  FTaschenrechner.Berechnung(rZahl1,rZahl2; var rSum,rProd: Real); //hier tritt der Fehler auf
  EAddition.Text:=FloatToStr(rSumme);
  EMultiplikation.Text:=FloatToStr(rProdukt);
end;



end.
Über Hilfe wäre ich sehr dankbar;)

Gruß icqgoofy

Dust Signs 4. Feb 2006 11:26

Re: Fehler-Anzeige: Not enough actual parameters
 
Zeile 41: was macht das var dort... und was der Strichpunkt zwischen den Parametern?

Dust Signs

mkinzler 4. Feb 2006 11:29

Re: Fehler-Anzeige: Not enough actual parameters
 
Zitat:

Delphi-Quellcode:
procedure TFTaschenrechner.BErgebnis_AnzeigeClick(Sender: TObject);
var rZahl1,rZahl2 : Real;
begin
  rZahl1:=StrToFloat(EZahl1.Text);
  rZahl2:=StrToFloat(EZahl2.Text);
  FTaschenrechner.Berechnung(rZahl1,rZahl2; var rSum,rProd: Real);
  EAddition.Text:=FloatToStr(rSumme);
  EMultiplikation.Text:=FloatToStr(rProdukt);
end;

Die Procedur muß so aufgerufen werden
Delphi-Quellcode:
 FTaschenrechner.Berechnung(rZahl1,rZahl2, rSumme,rProdukt);

Oxmyx 4. Feb 2006 11:29

Re: Fehler-Anzeige: Not enough actual parameters
 
Mit den globalen Variablen rSumme und rProdukt führst du den Sinn deiner var-Parameter ad absurdum.

icqgoofy 4. Feb 2006 11:34

Re: Fehler-Anzeige: Not enough actual parameters
 
Ok,
also ist es absurd das mit den globalen Variablen so zu machen.
Wie kann ich es dann machen, dass die Variablenparamter wieder an
die Ausgabe-Prozedur übergeben werden?

Das ist nämlich die Vrogabe unseres Lehrers, dass die
Lösungsvariablen Variablenparameter bleiben müsse.

Gruß icqgoofy

Dust Signs 4. Feb 2006 11:40

Re: Fehler-Anzeige: Not enough actual parameters
 
Vielleicht solltest du dann erstmal nachlesen, was var-Parameter genau sind und wie man sie verwendet :roll:

Dust Signs

mkinzler 4. Feb 2006 11:40

Re: Fehler-Anzeige: Not enough actual parameters
 
Für deinem Zweck könntest du sie geanuso wie rZahl1 und rZahl2 lokal definieren.

mkinzler 4. Feb 2006 11:45

Re: Fehler-Anzeige: Not enough actual parameters
 
Zitat:

Zitat von Dust Signs
Vielleicht solltest du dann erstmal nachlesen, was var-Parameter genau sind und wie man sie verwendet :roll:

Ich glaube in diesem Beispielprogramm wird doch sichtbar was var-Paramter bewirken. Zudem heißen die Paramter anders, wie die globalen Variablen.

Grundsätzlich sind var-Parameter aber eine "gefährliche" Waffe.

@icqgoofy: Die Frage ist nur, was dein Lehrer gemeint aht als er euch die Verwendung von by-reference Parametern verordnet hat

Edit: Habe leider die Prozedur nicht richtig angeschaut : so ist es natütlich falsch! Dust-sign hat natürlich Recht.

Die Prozedur müßte so aussehen:

Delphi-Quellcode:
procedure TFTaschenrechner.Berechnung(rZa1,rZa2: Real; var rSum,rProd: Real);
begin
  rSum:=rZa1+rZa2;
  rProd:=rZa1*rZa2;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:26 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