![]() |
Variable über funktionsnamen zurückgeben
Hi, ich möchte bei einer selbst definierten Funktion das ergebnis über den Procedurenamen zurückgeben. Kann mir einer sagen, wie ich das mache? :wiejetzt:
Beispiel:
Delphi-Quellcode:
Hierbei werden eingabe und schluessel beim aufrufen übergeben
procedure Tf_raten.raten(eingabe,schluessel:string);
begin ... end; Es soll ein String übergeben werden. |
Re: Variable über funktionsnamen zurückgeben
Delphi-Quellcode:
[edit=Admin]Delphi-Tags eingefügt. Künftig bitte selber machen. ;-) Mfg, Daniel[/edit]
procedure Tf_raten.raten([b]var[/b] eingabe,schluessel:string);
begin eingabe:='xyz'; end; |
Re: Variable über funktionsnamen zurückgeben
das ist ne möglichkeit
|
Re: Variable über funktionsnamen zurückgeben
Joahr! Söllte ed sein! ;)
|
Re: Variable über funktionsnamen zurückgeben
Hi. Solche Prozeduren nennt man auch Funktionen. :wink: Funktionen geben ihren Rückgabewert im Funktionsnamen (oder in Funktionsinternen Variable "Result", läuft aber glaub ich aufs gleiche raus) zurück.
Bsp:
Delphi-Quellcode:
Aufrufen kannst du das dann mit:
function Raten(Eingabe, Schlüssel : String) : Boolean; //Rückgabewert angeben, sonst meckert der Compiler (verständlicherweise)
begin IF . . . //Wenn die Entschlüsselung stimmt THEN Raten := true end;
Delphi-Quellcode:
Man liest sich, Stanlay :hi:
Form1.Visible := Raten('Hallo Welt','Hallo DP'); //Wenn Raten = true dann Form sichtbar.
|
Re: Variable über funktionsnamen zurückgeben
Bei Functionen kann man aber nur einen Wert zurückgeben, wobei man bei proceduren/functionen bei denen die Werte als Variablen übergeben werden, man beliebig viele übergeben kann.
(Wenn man nur einen Rückgabewert benötigt, dann sind die functionen natürlich wesentlich besser) |
Re: Variable über funktionsnamen zurückgeben
Das ist aber noch die alte Pascal schreibweise. In Delphi sollte man die interne Variable result für die Rückgabe des Fuznktionswertes nutzen.
Delphi-Quellcode:
function: foo: Integer;
begin result := 123; end; |
Re: Variable über funktionsnamen zurückgeben
Zitat:
@Luckie wusste gar nicht, dass das alte schreibweise ist...tja man lernt nie aus (ich schon gar nicht :wink:) Aber ich hab ja extra in Klammern geschrieben, dass es noch Result gibt. Man liest sich, Stanlay :hi: |
Re: Variable über funktionsnamen zurückgeben
[EDIT]
|
Re: Variable über funktionsnamen zurückgeben
Ebenfalls Edit...hat sich geklährt :wink:
|
Re: Variable über funktionsnamen zurückgeben
Salut,
Ich finde VAR nicht unbedingt ne geschickte Variante um Ergebnisse einer Prozedur etc. zurück zu geben, da dann der vorherige Wert überschrieben wird. Will man den vorherigen Wert behalten, und mehrere Ergebnisse zurück geben, empfiehlt sich die Verwendung von OUT. Beispiel ? - OK...
Delphi-Quellcode:
Grüße
procedure CalcLinearRegression(XVals, YVals : array of double; out a,b : double);
// Calculate Linear Regression for the XVals and YVals // ax + b = y // a = (n*SumXY-SumX*SumY)/(n*SumXX-SumX^2) // b = (SumY*SumXX-SumX*SumXY)/(n*SumXX-SumX^2) var PointNb : Integer; Nominator : double; SumX : Double; SumXX : Double; SumY : Double; SumXY : Double; i : integer; begin SumX := 0; SumXX := 0; SumY := 0; SumXY := 0; PointNb := Length(XVals); for i := 0 to PointNb-1 do begin SumX := SumX+XVals[i]; SumY := SumY+YVals[i]; SumXX := SumXX+XVals[i]*XVals[i]; SumXY := SumXY+XVals[i]*YVals[i]; end; Nominator := (PointNb*SumXX-SumX*SumX); a := (PointNb*SumXY-SumX*SumY)/Nominator; b := (SumY*SumXX-SumX*SumXY)/Nominator; end; Wolf ![]() P.S.: Eigentlich wollte ich noch nen Kommentar zum Thema Besserwisser schreiben, aber der wurde mir schonmal weg zensiert... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:17 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