AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Variablenübergabe und Rückgabe Funktion

Ein Thema von needatip · begonnen am 8. Nov 2006 · letzter Beitrag vom 8. Nov 2006
Antwort Antwort
needatip

Registriert seit: 11. Jan 2004
246 Beiträge
 
Delphi 10.4 Sydney
 
#1

Variablenübergabe und Rückgabe Funktion

  Alt 8. Nov 2006, 16:36
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 ?
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Variablenübergabe und Rückgabe Funktion

  Alt 8. Nov 2006, 16:38
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
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;
  Mit Zitat antworten Zitat
needatip

Registriert seit: 11. Jan 2004
246 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Variablenübergabe und Rückgabe Funktion

  Alt 8. Nov 2006, 17:07
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 ?
  Mit Zitat antworten Zitat
needatip

Registriert seit: 11. Jan 2004
246 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Variablenübergabe und Rückgabe Funktion

  Alt 8. Nov 2006, 17:32
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 ?
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Variablenübergabe und Rückgabe Funktion

  Alt 8. Nov 2006, 17:37
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
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Variablenübergabe und Rückgabe Funktion

  Alt 8. Nov 2006, 17:40
Ach so, an needatip,

wenn kein Rückgabewert, dann procedure.

nicht so:
function Calc(x : real; var a,b,c,d : real); sondern so:
procedure Calc(x : real; var a,b,c,d : real); gruß oki
  Mit Zitat antworten Zitat
needatip

Registriert seit: 11. Jan 2004
246 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: Variablenübergabe und Rückgabe Funktion

  Alt 8. Nov 2006, 20:29
Ok Danke. War gerade geistig abwesend!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:12 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