![]() |
AW: Record als Result einer Funktion
Zitat:
Ich möchte gerne wissen, wie ein Funktionsaufruf mit 50 Parametern gut sein soll? |
AW: Record als Result einer Funktion
Zitat:
Deshalb sind diese Variablen auch mit das erste, was ich lösche (nach den unsinnigen Kommentaren ala "private Deklarationen"). Es gibt in meinen Programmen immer nur genau eine globale Form-Variable: Die Main-Form, die beim Programm automatisch erzeugt wird. Der Rest wird bei Bedarf mit lokalen Variablen erzeugt. twm |
AW: Record als Result einer Funktion
Zitat:
Ein Ansatz wäre die (oder einige der) Parameter in einer Record-Struktur oder einem Parameter-Objekt zusammenzufassen. Sollte sich an der Parameterliste später mal was ändern, bleiben zumindest die Signaturen der Methoden unverändert. Andererseits schreit eine Methode mit 50 Parametern eigentlich auch nach einer Separierung der Funktionalität in eine eigene Klasse. |
AW: Record als Result einer Funktion
Zitat:
Das verstehe ich leider nicht. Meine monierte globale Variable ist ein Record. :?: |
AW: Record als Result einer Funktion
Der Record soll als Parameter an die Methode übergeben werden.
|
AW: Record als Result einer Funktion
Zitat:
|
AW: Record als Result einer Funktion
Das bezog sich auch eigentlich auf den Einwand mit den 50 Parametern, die man besser in einen Parameter-Record oder ein Parameter-Objekt umwandeln sollte.
Siehe auch: ![]() |
AW: Record als Result einer Funktion
Zitat:
Kannst Du das als Text kopieren? Ich habe keinen Zugriff auf die Seiten. |
AW: Record als Result einer Funktion
Zitat:
|
AW: Record als Result einer Funktion
Wäre es denn sinnvoll, aus OOP - Sicht, meine Unit: Unit_ABS_DBFunctions.pas neu zu schreiben?
Jedoch fehlt mir das Wissen, um hier z.B. eine eigene Klasse zu erstellen. |
AW: Record als Result einer Funktion
Zitat:
Da wird vorgeschlagen, statt einer Funktion "Bla(startDatum, endDatum)" eine Funktion "Bla(DatumsBereich)" zu erstellen, mit "DatumsBereich" als Parameterobjekt. In Delphi macht man zweckmäßigerweise einen erweiterten Record, dem man zusätzlich zu den reinen Daten auch noch Methoden zur Initialisierung mitgeben kann:
Delphi-Quellcode:
type TDatumsBereich = record
Von, Bis: TDateTime; procedure Heute; end; procedure TDatumsBereich.Heute; begin Von := Date; Bis := Date; end; |
AW: Record als Result einer Funktion
Zur Info:
Ich habe ein weiteres Thema eröffnet ![]() |
AW: Record als Result einer Funktion
Zitat:
Du gibst einen uninitialsierten Record zurück. Daher ist es Zufall, was da deine Boolean für Werte haben. Ist das Byte auf auf das der Boolean zeigt per Zufall 0 ist es False, alles andere wird zu True. Die Lösung ist ganz einfach. Initialisieren den Recordspeicher mit Nullen.
Code:
type
TTest_Result = record Test_a : Boolean; Test_b : Boolean; Test_c : Boolean; end; function test(a:integer):TTest_Result; function test(a:integer):TTest_Result; begin FillChar(Result, SizeOf(Result), 0); Result.Test_a := True; end; |
AW: Record als Result einer Funktion
Zitat:
Delphi-Quellcode:
function test(a:integer):TTest_Result;
begin Result := Default(TTest_Result); Result.Test_a := True; end; |
AW: Record als Result einer Funktion
Zitat:
Dankeschön. Irgendwie ist mir der Beitrag von Rolf entgangen. Das hilft mir auf jeden Fall schon einmal weiter und erleichtert mir die Grundinitialisierung eines Records. |
AW: Record als Result einer Funktion
Zitat:
|
AW: Record als Result einer Funktion
Zitat:
Da steht ein Beispiel, man soll das ... function amountInvoiced(startDate, endDate) {...} function amountReceived(startDate, endDate) {...} function amountOverdue(startDate, endDate) {...} ... ändern in ... function amountInvoiced(aDateRange) {...} function amountReceived(aDateRange) {...} function amountOverdue(aDateRange) {...} Also aus zwei Parametern einen machen, der diese beiden Werte sinnvoll kombiniert. Natürlich ist das bei nur zwei Parametern nur bedingt sinnvoll (kann es aber sein), aber das Prinzip ist dasselbe wie bei 50 Parametern. |
AW: Record als Result einer Funktion
Zitat:
|
AW: Record als Result einer Funktion
Ok danke für die Info. Nach vielen Jahren wieder was Neues gelernt. :-D
|
AW: Record als Result einer Funktion
Zitat:
|
AW: Record als Result einer Funktion
Zitat:
Delphi-Quellcode:
type
TMyGen<T> = class function Test: T; end; function TMyGen<T>.Test: T; begin Result := Default(T); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:31 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 by Thomas Breitkreuz