![]() |
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:
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.
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; 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? |
AW: Unterprogramme in Delphi 7 Felder ansprechen
![]() |
AW: Unterprogramme in Delphi 7 Felder ansprechen
Habe ich auch schon bei der Suche gefunden. Aber wo steht dort meine Frage beschrieben?
|
AW: Unterprogramme in Delphi 7 Felder ansprechen
du solltest dir die grundlagen von delphi angucken
themen bezogen vor allem prozeduren und funktionen |
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:
Wo habe ich jetzt meinen Fehler?
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; |
AW: Unterprogramme in Delphi 7 Felder ansprechen
guckt dir mal funktionen an
|
AW: Unterprogramme in Delphi 7 Felder ansprechen
Hallo snboy2010,
Delphi-Quellcode:
diese Procedure ist sinnlos. Verbj ist eine lokale Variable!
procedure VerbrauchBGes(var verb, jahrk : real);
var verbj: real; begin verbj := verb * jahrk; end; Bis bald Chemiker |
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; |
AW: Unterprogramme in Delphi 7 Felder ansprechen
Wieso als Var-Parameter?
|
AW: Unterprogramme in Delphi 7 Felder ansprechen
Ich hab seinen Code nur kopiert und darauf nicht geachtet :oops:
|
AW: Unterprogramme in Delphi 7 Felder ansprechen
Kein Thema, das kann jedem mal passieren :zwinker:
|
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.
|
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).
|
AW: Unterprogramme in Delphi 7 Felder ansprechen
Hallo,
Delphi-Quellcode:
so könnte man es auch einsetzen, aber eine Function ist schon besser dafür geeignet.
procedure VerbrauchBGes(var verbj: real; jahrk, verb: real);
begin verbj := verb * jahrk; end; Bis bald Chemiker |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz