Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Unterprogramme in Delphi 7 Felder ansprechen (https://www.delphipraxis.net/157500-unterprogramme-delphi-7-felder-ansprechen.html)

snboy2010 13. Jan 2011 21:41


Unterprogramme in Delphi 7 Felder ansprechen
 
Hallo. Hoffe bin hier in der richtigen Abteilung geladet :) Also folgendes Problem habe ich:
Ich möchte mein Programm optimieren indem ich es in Unterprogramme zerlege. Jetzt habe ich die folgende Procedur geschrieben:
Delphi-Quellcode:
procedure VerbrauchBGes(Target: Edit3.Text, Edit4.Text);
  var verb, jahrk, verbj: real;
   begin
      verb := StrToFloat(Edit3.Text);
      jahrk := StrToFloat(Edit4.Text);

      verbj := verb * jahrk;
end;

procedure TForm1.Button1Click(Sender: TObject);

begin

    Panel1.Caption := FloatTostr(VerbrauchBGes);

end;
Also in der Procedur soll folgendes geschen: Die Werte aus den Textfelder Edit 3 & 4 sollen eingelesen werden und miteinander multipliziert. Das Ergebniss soll dann beim drücken auf den Button im Panel1 ausgegeben werden.

Mit dieser Variante zeigt der Compiler dieses Problem:
[Error]Recher.pas(55): Undeclared identifier: 'Edit3'
[Error]Recher.pas(55): Missing parameter type
[Error]Recher.pas(56): Identifier redeclared: 'Text'
[Error]Recher.pas(58): There is no overloaded version of 'StrToFloat' that can be called with these arguments
[Error]Recher.pas(72): Not enough actual parameters
[Fatal Error]Project1.dpr(5): Could not compile used unit 'Rechner.pas'

Was mache ich in der Procedur falsch und was muss ich verbessern?

Chillkröte 13. Jan 2011 21:44

AW: Unterprogramme in Delphi 7 Felder ansprechen
 
Tutorial wäre mein tip ;) :)

snboy2010 13. Jan 2011 22:10

AW: Unterprogramme in Delphi 7 Felder ansprechen
 
Habe ich auch schon bei der Suche gefunden. Aber wo steht dort meine Frage beschrieben?

Chillkröte 13. Jan 2011 22:18

AW: Unterprogramme in Delphi 7 Felder ansprechen
 
du solltest dir die grundlagen von delphi angucken
themen bezogen vor allem prozeduren und funktionen

snboy2010 13. Jan 2011 22:33

AW: Unterprogramme in Delphi 7 Felder ansprechen
 
Ok. Jetzt bin ich etwas weiter. Das Programm startet jetzt es wird aber immer ein komplett falscher Wert berechnet. So sieht es jetzt aus:

Delphi-Quellcode:
procedure VerbrauchBGes(var verb, jahrk : real);
  var verbj: real;
   begin
      verbj := verb * jahrk;
end;

procedure TForm1.Button1Click(Sender: TObject);
var verb, jahrk, verbj: real;
begin
    verb := StrToFloat(Edit3.Text);
    jahrk := StrToFloat(Edit4.Text);
    VerbrauchBGes(verb, jahrk);

    Panel1.Caption := FloatToStr(verbj);

end;
Wo habe ich jetzt meinen Fehler?

Chillkröte 13. Jan 2011 22:40

AW: Unterprogramme in Delphi 7 Felder ansprechen
 
guckt dir mal funktionen an

Chemiker 13. Jan 2011 22:41

AW: Unterprogramme in Delphi 7 Felder ansprechen
 
Hallo snboy2010,

Delphi-Quellcode:
procedure VerbrauchBGes(var verb, jahrk : real);
var verbj: real;
begin
  verbj := verb * jahrk;
end;
diese Procedure ist sinnlos. Verbj ist eine lokale Variable!

Bis bald Chemiker

mkinzler 14. Jan 2011 05:22

AW: Unterprogramme in Delphi 7 Felder ansprechen
 
Mach eine Funktion draus:
Delphi-Quellcode:
function VerbrauchBGes(var verb, jahrk : real): real;
begin
      result := verb * jahrk;
end;

procedure TForm1.Button1Click(Sender: TObject);
var verb, jahrk, verbj: real;
begin
    verb := StrToFloat(Edit3.Text);
    jahrk := StrToFloat(Edit4.Text);
    verbj := VerbrauchBGes(verb, jahrk);

    Panel1.Caption := FloatToStr(verbj);
end;

DeddyH 14. Jan 2011 07:48

AW: Unterprogramme in Delphi 7 Felder ansprechen
 
Wieso als Var-Parameter?

mkinzler 14. Jan 2011 08:30

AW: Unterprogramme in Delphi 7 Felder ansprechen
 
Ich hab seinen Code nur kopiert und darauf nicht geachtet :oops:

DeddyH 14. Jan 2011 08:40

AW: Unterprogramme in Delphi 7 Felder ansprechen
 
Kein Thema, das kann jedem mal passieren :zwinker:

snboy2010 14. Jan 2011 09:28

AW: Unterprogramme in Delphi 7 Felder ansprechen
 
Vielen Dank für die Hilfe. Habe glaube ich meinen Fehler verstanden. Einer Function kann man einen Rückgabewert geben. Darum wird jetzt auch richtig mathematisch gerechnet. Einer Procedure kann man dieses nicht und deshalb ist eine Procedure für z.B. Rechenoperationen ungeeignet.

DeddyH 14. Jan 2011 09:31

AW: Unterprogramme in Delphi 7 Felder ansprechen
 
Das stimmt nicht. Auch eine Procedure kann Werte ändern, sofern man diese als Var-Parameter übergibt. Der eigentliche Unterschied zwischen Prozedur und Funktion ist wirklich der, dass Prozeduren keinen Rückgabewert haben (void in C und ähnlichen Sprachen).

Chemiker 14. Jan 2011 13:02

AW: Unterprogramme in Delphi 7 Felder ansprechen
 
Hallo,
Delphi-Quellcode:
procedure VerbrauchBGes(var verbj: real; jahrk, verb: real);
begin
  verbj := verb * jahrk;
end;
so könnte man es auch einsetzen, aber eine Function ist schon besser dafür geeignet.
Bis bald Chemiker


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