![]() |
Rückgabe
Ich will eine funktion bzw. procedure (?) machen die mir etwas zurückgibt.
Beispiel:
Delphi-Quellcode:
Label1.Caption := FloatToStr(Doppelt(1));
Delphi-Quellcode:
ich möchte möglichst vermeiden eine eigene variable für die rückgabe deklarieren zu müssen
procedure Doppelt(x: Real);
begin gib zurück: x*2; //Was muss ich machen damit ich x*2 als rückgabe bekomme? end; kann mir da jemand helfen? hab gesucht aber nix gefunden |
Re: Rückgabe
Ein Prozedur die etwas zurüch gibt heißt Function.
Delphi-Quellcode:
Grüße
function testFunc:byte
begin result := 123; end Klaus |
Re: Rückgabe
achso ok vielen dank :)
hab noch nie was mit rückgaben gemacht deshalb^^ kann mann denn auch mehrere sachen zurückgeben lassen? |
Re: Rückgabe
Eine Funktion kann nur einen Wert zurückgeben. Du könntest Dir aber z.B. einen Recordtyp definieren und diesen dann zurückgeben.
|
Re: Rückgabe
Es gibt auch Prozeduren, die dir etwas zurückgeben: (HIERBEI SIND MEHRERE OUT-/VAR-PARAMETER MÖGLICH)
Delphi-Quellcode:
Nach dem Aufrufen von blah(a, b) nimmt b den neuen Wert (y + x; also b + a) an.
procedure blah(x: integer; out y: integer);
begin y := y + x; end; procedure blah2; var a, b: inetger; begin a := 1 b := 2; balh(a, b); //b = 3! end; möglich ist auch:
Delphi-Quellcode:
//Edit: Schreibfehler :stupid:procedure blah(out a, b, c: integer; out x: extended {...}); |
Re: Rückgabe
Hi,
Jain. Man kann z.B. auch Klassen/records zurückgeben und somit indirekt mehrere Daten zurückgeben:
Delphi-Quellcode:
Gruß
type
TDaten = record Zahl: Integer; Text: String; end; function GibDaten: TDaten; begin Result.Zahl := 5; Result.Text := 'Fünf'; end; Neutral General |
Re: Rückgabe
Delphi-Quellcode:
funtioniert auch!
function testFunc:byte
begin testFunc := 123; end |
Re: Rückgabe
@Neutral: das hab ich doch eben schon gesagt ;)
|
Re: Rückgabe
Zitat:
Zitat:
|
Re: Rückgabe
ok also ich hab das jetzt soweit bleibt nur noch eine frage.
also ich habe hier diese prozedur die den schnittpunkt von zwei linien zurückgeben soll. Das ganze sieht jetzt so aus:
Delphi-Quellcode:
wie man siehst hab ich zwei ausgaben: SX (schnittpunkt X) und SY (Schnittpunkt Y).
procedure GetColPoint(D: string; X1,Y1,X2,Y2,X3,Y3,X4,Y4,Side: Integer; out SX,SY: Real);
var A1,B1,C1, A2,B2,C2: Real; begin if X1 = X2 then X1 := 0; if Y1 = Y2 then Y1 := 0; A1 := -(1/(X2-X1)); B1 := (1/(Y2-Y1)); C1 := (X1/(X2-X1)) - (Y1/(Y2-Y1)); A2 := -(1/(X4-X3)); B2 := (1/(Y4-Y3)); C2 := (X3/(X4-X3)) - (Y3/(Y4-Y3)); SX := (B1*C2-C1*B2) / (A1*B2-A2*B1); SY := (C1*A2-C2*A1) / (A1*B2-A2*B1); end; so. das problem ist ich kann ja jetz zB nicht einfach auf ein panel schrieben da ich ja zwei rückgaben habe wie nehme ich mir also erst nur die eine dann die andere rückgabe raus? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:39 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