![]() |
function mit unterschiedlichen parametern
hallo,
mal eine grundsätzliche frage. ich bräuchte für eine funktion unter Umständen mehrere parameter
Delphi-Quellcode:
leider ist die zahln variabel. wie sollte man das am besten realisieren?
function Summe(zahl1,zahl2,...zahln :integer): integer
begin result:= zahl1 + zahl2 +..zahln; end; danke raik |
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. |
Re: function mit unterschiedlichen parametern
Moin!
Code:
Delphi-Quellcode:
Aufruf:
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;
Delphi-Quellcode:
Die Liste kannst du einfach mit einem Komma erweitern.
lSum := Summe([0, 23, 4, 65, 12, 33, 6, 2, 4, 7, 9]);
MfG Muetze1 |
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 |
Re: function mit unterschiedlichen parametern
Nur interessehalber:
Zitat:
|
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:
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.
Bla = record
Zahl: real; Befehl: byte; //1 -> +, 2-> -... end; Aufruf dann über Berechne(list: Array of Bla): real; |
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:
Die Ausgabe wäre dann:
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.
Code:
Integer 1
Boolean TRUE Char " AnsiString Hallo Object TObject PChar Miep |
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 |
Re: function mit unterschiedlichen parametern
Moin!
Zitat:
Wenn du es wie in meinem Beispiel aufrufst (direkt @ Compile Time festgelegt): Nein! MfG Muetze1 |
Re: function mit unterschiedlichen parametern
Vielen Dank, wieder was dazugelernt!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:10 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