Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Funktion mit mehreren Results


Jakyll - Fr 01.08.03 04:44
Titel: Funktion mit mehreren Results
Wie kann ich aus einer Funktion mehrere Results bekommen..
Also


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
function xyz():Integer;
begin
//rechne
Result:=x;
//rechne
Result:=y;
end;


quasi so...! Aber so bekommt man ja nur Result=y raus.
hat da vielleicht jemand ne Idee?

Moderiert von user profile iconKlabautermann: Delphi-Tags hinzugefügt.


hansa - Fr 01.08.03 07:18

Du mußt VAR Parameter benutzen, wie bei einer Prozedur, oder besser gleich eine Prozedur.


derDoc - Fr 01.08.03 08:11

In deinem Fall wäre eine Lösung mit Var Parametern z.B.

Delphi-Quelltext
1:
function Rechnen(var x: Integer; var y: Integer; Zahl1, Zahl2: Integer): Integer;                    


Aufrufen kannst du das dann so:

Delphi-Quelltext
1:
2:
3:
4:
var
  x, y: Integer;
begin
  Rechnen(x, y, 2025);


Keldorn - Fr 01.08.03 08:17

alternativ ein Record für die Rückgabe verwenden


Delphi-Quelltext
1:
2:
3:
4:
5:
function Rechnen(Zahl1, Zahl2: Integer):Tpoint;
  begin
    result.x := zahl1+10;
    result.y := zahl2+10;
  end;

hängt halt davon ab, wie du dein Code beim Funktionsaufruf aussehen soll.

Mfg Frank


hansa - Fr 01.08.03 09:58

Herr Doktor, so aber nicht. :lol:

derDoc hat folgendes geschrieben:
Aufrufen kannst du das dann so:

Delphi-Quelltext
1:
2:
3:
4:
var
  x, y: Integer;
begin
  Rechnen(x, y, 2025);


Der Funktion muß er trotzdem noch einen Wert zuweisen.


Delphi-Quelltext
1:
2:
3:
var z : integer;

z := Rechnen(x, y, 2025);


Wie gesagt, bei mehr als einem Rückgabewert nimmt man besser gleich eine Prozedur, sonst kommt man leicht durcheinander. 8)


MSCH - Fr 01.08.03 10:02

oder offene Arrays oder erstellt eine Klasse die das macht (Kapselung) und greift auf Eigenschaften (properties) zurück.

grez
msch


derDoc - Fr 01.08.03 10:17

Also ich sehe keinen Bedarf einem Wert die Funtion zuzuweisen. Du rufst sie auf und sie schreibt dir ein paar Sachen in deine Variablen.
Du musst zwar einen Rückgabewerttyp festlegen, ihn aber nicht benutzen.