Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Variablenübergabe und Rückgabe Funktion (https://www.delphipraxis.net/80411-variablenuebergabe-und-rueckgabe-funktion.html)

needatip 8. Nov 2006 15:36


Variablenübergabe und Rückgabe Funktion
 
Hallo,
wie übergebe ich an eine nicht lokale Funktion/Prozedur (in anderer Unit) einen Wert vom Typ REAL, in der dann Berechnungen ausgeführt werden und danach 4 verschiedene errechnete Werte an die ursprüngliche Unit zurückgegeben werden?

z.b.
Übergabe an Funktion = Nettobetrag
Rückgabe
Wert1 : Nettobetrag * 0.15
Wert2 : Wert1 + Nettobetrag
Wert3 : Wert2 * 0.16
Wert4 : Wert3 + Wert4

Oder verwende ich besser eine Prozedur mit Variablenparameter ?

leddl 8. Nov 2006 15:38

Re: Variablenübergabe und Rückgabe Funktion
 
Zitat:

Zitat von needatip
Oder verwende ich besser eine Prozedur mit Variablenparameter ?

Es würde zwar gehen, indem du dir einen Typ schreibst, der die benötigten Werte beinhaltet, aber deutlich bequemer geht es wirklich über Variablenparameter ;)

needatip 8. Nov 2006 16:07

Re: Variablenübergabe und Rückgabe Funktion
 
wie ging das nochmal?

SQL-Code:
function Calc(x : real; var a,b,c,d : real);
a := x * 0.15;
b := a + x;
c := b * 0.16;
d := b + c;
end;
aber beim Aufruf möchte ich doch nur eine Real-Variable übergeben ?

needatip 8. Nov 2006 16:32

Re: Variablenübergabe und Rückgabe Funktion
 
Hab das jetzt über Type Record gemacht.
In der einen Unit deklariert:

Delphi-Quellcode:
type
  TWerte = record
    a: real;
    b: real;
    d: real;
    d: real;
    e: real;
  end;

function calc: TWerte;
begin
  Result.a := Table1.FieldByName('Rechnungswert').AsInteger);
  Result.b := Result.a * 15 / 100;
  Result.c := Result.a + Result.b;
  Result.d := Result.c * 16 / 100;
  Result.e := Result.c + Result.d;
end;
Weil ich diese Werte für einen Rave Report brauche muss ich aber die einzelnen Werte abfragen.
Bei meinem Aufruf wird die Funktion 'calc' in der anderen Unit aber jedesmal aufgerufen, was natürlich langsam ist.

Delphi-Quellcode:
procedure blabla...
begin
        SetParam('pNettoBetrag', FloatToStrF(calc.a, ffCurrency, 99, 2));
        SetParam('pAufgeld', FloatToStrF(calc.b, ffCurrency, 99, 2));
        SetParam('pNettoIncAufgeld', FloatToStrF(calc.c, ffCurrency, 99, 2));
        SetParam('pMwst', FloatToStrF(calc.d, ffCurrency, 99, 2));
        SetParam('pGBetrag', FloatToStrF(calc.e, ffCurrency, 99, 2));
end;
Wie kann ich denn erreichen dass dies nur einmal aufgerufen wird ?

oki 8. Nov 2006 16:37

Re: Variablenübergabe und Rückgabe Funktion
 
Hi,

oder Rückgabewert der Function als Array of Real; oder Array [0..3] of Real; oder TRealArr = Array of Real und Rückgabe als TRealArr ......

oder so vie vorher beschrieben


Gruß oki

oki 8. Nov 2006 16:40

Re: Variablenübergabe und Rückgabe Funktion
 
Ach so, an needatip,

wenn kein Rückgabewert, dann procedure.

nicht so:
Delphi-Quellcode:
function Calc(x : real; var a,b,c,d : real);
sondern so:
Delphi-Quellcode:
procedure Calc(x : real; var a,b,c,d : real);
gruß oki

needatip 8. Nov 2006 19:29

Re: Variablenübergabe und Rückgabe Funktion
 
Ok Danke. War gerade geistig abwesend! :oops:


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:00 Uhr.

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