Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   function mit unterschiedlichen parametern (https://www.delphipraxis.net/37890-function-mit-unterschiedlichen-parametern.html)

kiar 11. Jan 2005 21:14


function mit unterschiedlichen parametern
 
hallo,

mal eine grundsätzliche frage.
ich bräuchte für eine funktion unter Umständen mehrere parameter
Delphi-Quellcode:
function Summe(zahl1,zahl2,...zahln :integer): integer

begin
    result:= zahl1 + zahl2 +..zahln;
end;
leider ist die zahln variabel. wie sollte man das am besten realisieren?


danke raik

Tubos 11. Jan 2005 21:18

Re: function mit unterschiedlichen parametern
 
Du kannst ein Array nehmen.
Unendlich viele Parameter sind in Delphi nicht möglich. Dazu gab's übrigens schon mal nen Thread.

Muetze1 11. Jan 2005 21:39

Re: function mit unterschiedlichen parametern
 
Moin!

Code:
Delphi-Quellcode:
function Summe(Const Zahlen : Array Of Integer): integer
Var
  i : Integer;
begin
  Result := 0;
  For i := Low(Zahlen) To High(Zahlen) Do
    Inc(Result, Zahlen[i]);
end;
Aufruf:
Delphi-Quellcode:
lSum := Summe([0, 23, 4, 65, 12, 33, 6, 2, 4, 7, 9]);
Die Liste kannst du einfach mit einem Komma erweitern.

MfG
Muetze1

kiar 11. Jan 2005 21:51

Re: function mit unterschiedlichen parametern
 
hallo muetze1 und tubos,

überredet ich werde es mit einem array versuche zu realisieren. leider war die fkt nur ein beispiel, es können auch noch subtraktion, division und multiplikation in dieser zahlenkombination auftauchen.


naja, mir ging es um die beste lösung die zahlen zu übergeben.


danke raik

Matze 11. Jan 2005 21:59

Re: function mit unterschiedlichen parametern
 
Nur interessehalber:

Zitat:

Zitat von Muetze1
Delphi-Quellcode:
function Summe(Const Zahlen : Array Of Integer): integer

Muss man das nicht mittels Type umsetzen?

Nikolas 11. Jan 2005 22:03

Re: function mit unterschiedlichen parametern
 
Ich versteh dann das Problem so, dass zu so einen Ausdruck auswerten willst:

a+b-c/d*a...

Dann könntest du ein Record schreiben
Delphi-Quellcode:
Bla = record
   Zahl: real;
   Befehl: byte; //1 -> +, 2-> -...
end;
So könntest du zu jeder Zahl noch mitliefern, wie die nächste Zahl dann bearbeitet werden soll /wird nur etwas kompliziert bei Klammern, aber da sollte auch eher ein Parser rann.

Aufruf dann über Berechne(list: Array of Bla): real;

Robert_G 11. Jan 2005 22:27

Re: function mit unterschiedlichen parametern
 
Sollen nur zahlen rein geht es mit dem int-array.
Willst du alles mögliche übergeben könntest du ein sog. Open Array benutzen
Delphi-Quellcode:
program TestOpenArray;
{$APPTYPE CONSOLE}

procedure SomeFunction(params: array of const);
var
   i                : Integer;
begin
   for i := Low(params) to High(params) do
      case params[i].VType of
         vtInteger:
            Writeln('  Integer', #9, params[i].vInteger);
         vtBoolean:
            Writeln('  Boolean', #9, params[i].vBoolean);
         vtChar:
            Writeln('     Char', #9, params[i].vChar);
         vtObject:
            Writeln('   Object', #9, params[i].vObject.ClassName);
         vtAnsiString:
            Writeln('AnsiString', #9, AnsiString(params[I].vAnsiString));
         vtPChar:
            Writeln('    PChar', #9, params[i].vPChar);
      end;
end;

var
   SomeString                : string;
begin
   SomeString := 'Hallo';
   SomeFunction([1,
                 true,
                 #34,
                 SomeString,
                 TObject.Create(),
                 PChar('Miep')]);
end.
Die Ausgabe wäre dann:
Code:
   Integer   1
   Boolean   TRUE
      Char   "
AnsiString   Hallo
    Object   TObject
     PChar   Miep

kiar 11. Jan 2005 22:36

Re: function mit unterschiedlichen parametern
 
hallo robert,

nein es sollen nur zahlen rein.

das tool hat folgenden Hintergrund, der kleine (sohn) ist in der zweiten klasse und hat ein wenig konzentration schwierigkeiten, nicht das er die matheaufgaben nicht löst, er macht aber immer alles mögliche nebenbei und dann schleichen sich fehler ein, ergo mein blutdruck geht nach oben :mrgreen: ,

nun will ich mit dem tool erreichen, das er eine bestimmte menge von aufgaben in einer bestimmten zeit löst, dann hat er den druck sich zu konzentrieren, ausserdem findet er die uhr toll :mrgreen:

um es aber flexibel zu gestalten will ich auch funktionen einbauen, welche in höheren klassen noch genutzt werden können.

mir scheint hier die variante von toxman am geeignesten zu sein, bin aber für weiter vorschläge offen.

danke raik

Muetze1 11. Jan 2005 22:44

Re: function mit unterschiedlichen parametern
 
Moin!

Zitat:

Zitat von Matze
Nur interessehalber:

Zitat:

Zitat von Muetze1
Delphi-Quellcode:
function Summe(Const Zahlen : Array Of Integer): integer

Muss man das nicht mittels Type umsetzen?

Wenn du das Array selber von aussen belegst und dann als gesamtes übergibst: Ja!
Wenn du es wie in meinem Beispiel aufrufst (direkt @ Compile Time festgelegt): Nein!

MfG
Muetze1

Matze 11. Jan 2005 23:12

Re: function mit unterschiedlichen parametern
 
Vielen Dank, wieder was dazugelernt!


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:19 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