![]() |
Funktion mit 2 Zahlen
HI Delphianer
Sorry das ma wieder so ne noobfrage kommt aber naja. Ich versuche grade meine erste Bibiothek mit Delphi zu schreiben. Es soll eine mathematische Formelsammlung werden (ich weiß gibts bestimmt schon aber ich will so was ma selbst versuchen) Nun stoß ich schon gleich am Anfang auf mein erstes Problem: ich will als erstes die Formel für den Flächeninhalt eines Rechtecks in die Bibiothek programieren also erst ma was gaaaaaanz leichtes. So die Formel für A ist ja A=a*b. So also den ich mir Nehm ich ne Prozedure und mach das ganze so
Delphi-Quellcode:
so jetzt hätte ich die 2 Varriablen drin und kann damit A ausrechnen.
prozedure Flächeninhalt(a, b: integer);
Jetzt denk ich weiter: wie bekomme ich nun den Flächeninhalt zurück in das Hauptprogramm? So jetzt hab ich gelernt, dass eine prozedure keinen Wert zurück gibt, sondern eine Funktion. Also nehm ich mir eine Funktion
Delphi-Quellcode:
So jetzt kann meine Funktion den Flächeninhalt zurückgeben
Funktion Flächeninhalt: integer;
Wie bekomme ich jetzt aber die Varriablen a und b darein damit der Flächeninhalt berechnet werden kann. Es soll eine algemeine Unit werden die ich in jedes belibige Programm einbauen kann also sollte nichts Situationsgebundenes in der Funktion wie
Delphi-Quellcode:
sein
a := edit1.Text;
So ich hoffe ihr habt mein Problem verstanden Danke im Vorraus Axxus |
Re: Funktion mit 2 Zahlen
jetzt misch doch mal deine Deklarationen von Prozedur und Funktion et voilá, Problem gelöst :mrgreen:
Delphi-Quellcode:
function Flaecheninhalt(a, b: Integer) : Integer;
|
Re: Funktion mit 2 Zahlen
coll ih wusst gar nicht, dass das geht
danke und sorry wg der noobfrage Axxus |
Re: Funktion mit 2 Zahlen
Kein Problem, jeder fängt mal an ;)
Evtl. wären ja auch die Einsteiger-Tutorials von DSDT was für dich: ![]() |
Re: Funktion mit 2 Zahlen
Oder du nimmst einen Parameter "call by reference" =)
Und da gibt es in Delphi 2 Möglichkeiten: Einmal explezit nur als Ausgabeparameter mit dem Schlüsselwort Out oder mit dem Variablenparameter Var Würde dann so aussehen:
Delphi-Quellcode:
achso, das Const für Konstantenparameter...
Procedure Flaeche1( Const a, b: Integer; Out Result: Integer );
{...} Procedure Flaeche2( Const a, b: Integer; Var Result: Integer ); {...} Ist in diesem Fall nicht notwendig, kann aber einen Performance Unterschied ausmachen, gerade wenn man z.B. mit Strings arbeitet... Bye Christian |
Re: Funktion mit 2 Zahlen
Naja ich programiere jetzt schon seit 3 Jahren mit Delphi also sollt ich das eigentlich wissen :oops: :oops: :oops:
Aber ich hab noch nie eine Libary geschrieben und habe selten functions benutzt deswegen auch die Bildungslücke Trotzdem danke Leute |
Re: Funktion mit 2 Zahlen
Wäre es so sauber programiert
Delphi-Quellcode:
interface
function Rechteck_Flächeninhalt (a, b: extended) : extended; implementation function Rechteck_Flächeninhalt (a, b: extended) : extended; begin Rechteck_Flächeninhalt := a*b; end; end. |
Re: Funktion mit 2 Zahlen
Jo, sieht doch gut aus. Um etwas Schreibarbeit zu sparen, kannst du für den Rückgabewert statt des Funktionsnamens auch einfach nur "Result" schreiben ;)
Delphi-Quellcode:
//Edit:
function Rechteck_Flächeninhalt (a, b: extended) : extended;
begin Result := a*b; end; Bis auf die Tatsache, dass es wohl mit dem Funktionsnamen ein Problem geben dürfte ;) Umlaute sind meines Wissens nach nicht erlaubt ;) |
Re: Funktion mit 2 Zahlen
Erstmal nein, da das Ergebiss von Funktionen in Result gelegt werden muss! ;)
Nunja, wenn du nur mit Ganzzahlen arbeiten willst, ist das Performance mässig weniger gut. Zudem würde ich bei Fließkomma lieber mit dem Const arbeiten, da du so mit der Referenz des Wertes arbeitest und nicht mit einer Kopie... (Kopien und Rechenoperationen mit Fließkommazahlen können das Ergebniss ungenau machen, wenn man das so sagen kann... Ich persönlich würde es so machen wenn ich Zeit hab =)
Delphi-Quellcode:
Unit {...};
Interface Function Rechteck_Flaecheninhalt( Const a, b: Integer ): Extended; Overload; Function Rechteck_Flaecheninhalt( Const a, b: Extended ): Extended; Overload; Implementation Function Rechteck_Flaecheninhalt( Const a, b: Extended ): Extended; Begin Result := a * b; End; Function Rechteck_Flaecheninhalt( Const a, b: Integer ): Intger; Begin Result := a * b; End; end. |
Re: Funktion mit 2 Zahlen
result oder funktionsnamen, ist egal auf was man sein ergebnis der funktion zuweist
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:26 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-2025 by Thomas Breitkreuz