Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Funktion mit 2 Zahlen (https://www.delphipraxis.net/87428-funktion-mit-2-zahlen.html)

Axxus 28. Feb 2007 16:23


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:
prozedure Flächeninhalt(a, b: integer);
so jetzt hätte ich die 2 Varriablen drin und kann damit A ausrechnen.

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:
Funktion Flächeninhalt: integer;
So jetzt kann meine Funktion den Flächeninhalt zurückgeben
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:
a := edit1.Text;
sein

So ich hoffe ihr habt mein Problem verstanden

Danke im Vorraus

Axxus

leddl 28. Feb 2007 16:25

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;

Axxus 28. Feb 2007 16:27

Re: Funktion mit 2 Zahlen
 
coll ih wusst gar nicht, dass das geht

danke

und sorry wg der noobfrage

Axxus

leddl 28. Feb 2007 16:28

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: http://www.dsdt.info/tutorials/?cat=1

Kedariodakon 28. Feb 2007 16:32

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:
Procedure Flaeche1( Const a, b: Integer; Out Result: Integer );
{...}
Procedure Flaeche2( Const a, b: Integer; Var Result: Integer );
{...}
achso, das Const für Konstantenparameter...
Ist in diesem Fall nicht notwendig, kann aber einen Performance Unterschied ausmachen, gerade wenn man z.B. mit Strings arbeitet...

Bye Christian

Axxus 28. Feb 2007 16:34

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

Axxus 28. Feb 2007 16:36

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.

leddl 28. Feb 2007 16:40

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:
function Rechteck_Flächeninhalt (a, b: extended) : extended;
begin
  Result := a*b;
end;
//Edit:
Bis auf die Tatsache, dass es wohl mit dem Funktionsnamen ein Problem geben dürfte ;) Umlaute sind meines Wissens nach nicht erlaubt ;)

Kedariodakon 28. Feb 2007 16:44

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.

jmd anders 28. Feb 2007 16:48

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 16:21 Uhr.
Seite 1 von 3  1 23      

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