Warum kommt niemand auf die Idee sich mal zu überlegen, ob es überhaupt sinnvoll ist, sooooo viele Parameter zu haben.
PS, dazu wird in vielen StyleGuides was gesagt, nicht nur bezüglich Delphi.
Lösung: DataRecords bzw. DataObjects
Aber das kann man auch problemlos umdrehen, also anstatt Parameter-Record/Objekt an Funktion, einfach die Funktion in den Record/Objekt.
Delphi-Quellcode:
type
TNuRohrTubulent = record // oder als Klasse
Re, Pr, d_i, L, Eta, Eta_W: Double;
c1, c2, c3, c4, c5, c6: Double;
class operator Initialize(out Dest: TNuRohrTubulent);
function Calc: Double;
end;
class operator TNuRohrTubulent.Initialize(out Dest: TNuRohrTubulent);
begin
Dest.Re := NaN;
Dest.Pr := NaN;
Dest.d_i := NaN;
Dest.L := NaN;
Dest.Eta := NaN;
Dest.Eta_W := NaN;
Dest.c1 := 0.0235;
Dest.c2 := 0.80;
Dest.c3 := 230;
Dest.c4 := 1.80;
Dest.c5 := 0.3;
Dest.c6 := 0.80;
end;
function TNuRohrTubulent.Calc: Double;
begin
Assert(not (IsNan(Re) or IsNan(Pr) or IsNan(d_i) or IsNan(L)
or IsNan(Eta) or IsNan(Eta_W)), 'TNuRohrTubulent: params missing');
Result := c1
* (Power(Re, c2) - c3)
* (Power(Pr, c5) * c4 - c6)
* (Power(d_i / L, 2/3) + 1)
* Power(Eta / Eta_W, 0.14);
end;