Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.034 Beiträge
 
Delphi 12 Athens
 
#19

AW: Optionale (= vorbelegte) FunktionsParameter vom Type Record - Wie geht das?

  Alt 6. Jun 2021, 23:21
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;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 7. Jun 2021 um 01:18 Uhr)
  Mit Zitat antworten Zitat