AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Delphi Problem mit einfügen einer function in procedure
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit einfügen einer function in procedure

Ein Thema von wolfaa · begonnen am 14. Jan 2011 · letzter Beitrag vom 14. Jan 2011
Antwort Antwort
Seite 2 von 2     12   
wolfaa

Registriert seit: 14. Jan 2011
11 Beiträge
 
Delphi 7 Personal
 
#11

AW: Problem mit einfügen einer function in procedure

  Alt 14. Jan 2011, 14:57
also für die berechnung brauchen wir den gasverbrauch in meinem fall ist es hier a
dann wird ein tarif berechnet und der wird wieder zurück an die fensterklasse gesendet. in der fachklassewird ja nur der preis berechnet.
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#12

AW: Problem mit einfügen einer function in procedure

  Alt 14. Jan 2011, 15:05
Hallo,

im Prinzip könnte die Gasklasse so aussehen:

Delphi-Quellcode:
type
  TGasklasse = class
     private
       verbrauch : double;
       function berechneTarif:Integer;

     public
       setVerbrauch(AVerbrauch: double);
       getTarif:Integer;
  end;
Delphi-Quellcode:
function TGasklasse.berechneTarif:Integer;
begin
  // tue etwas mit Verbrauch um den günstigsten Tarif zu ermitteln
  // wobe die Tarifklasse ein integer ist
end;

procedure TGasklasse.setVerbrauch(AVerbrauch: double);
begin
  verbrauch := AVerbrauch;
end;

function TGasklasse.getTarif:Integer;
begin
  result := berechneTarif;
end;

Nachtrag:
Wo bekommt die Gasklasse die Preise der verschiedenen Gassorten her?


Grüße
Klaus
Klaus

Geändert von Klaus01 (14. Jan 2011 um 15:12 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#13

AW: Problem mit einfügen einer function in procedure

  Alt 14. Jan 2011, 15:08
Na also. Dann kann die Funktion z.B. so aussehen:
Delphi-Quellcode:
function erdgaspreisberechnen(a : real): real;
begin
  Result := a * Preis; //Preis ist anderweitig ermittelt worden
end;
Im Formular, welches diese Unit benutzt, geht dann so etwas:
Delphi-Quellcode:
procedure TDeinForm.ButtonBerechnenClick(Sender: TObject);
var Verbrauch, Preis: real;
begin
  if RadioButtonPreis.Checked then
    begin
      Verbrauch := StrToFloat(EditVerbauch.Text);
      Preis := erdgaspreisberechnen(Verbrauch);
      LabelPreis.Caption := FloatToStr(Preis);
    end;
end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#14

AW: Problem mit einfügen einer function in procedure

  Alt 14. Jan 2011, 15:12
Oder hier als abstraktes Beispiel drei Methoden zum Berechnen:
Delphi-Quellcode:
unit uFoo;

interface

type
  // Der Preis kann von beliebiger Stelle geändert werden
  TCalcClass1 = class
  private
    FPreis : Extended;
    procedure SetPreis( const Value : Extended );

  public
    property Preis : Extended read FPreis write SetPreis;
    function Calc( Menge : Extended ) : Extended;
  end;

  // Der Preis wird bei der Erzeugung festgelegt
  TCalcClass2 = class
  private
    FPreis : Extended;

  public
    property Preis : Extended read FPreis;
    function Calc( Menge : Extended ) : Extended;
    constructor Create( Preis : Extended );
  end;

  // Der Preis muss bei jeder Berechnung mit angegeben werden
function Calc( Menge, Preis : Extended ) : Extended;

implementation

function Calc( Menge, Preis : Extended ) : Extended;
  begin
    Result := Menge * Preis;
  end;

{ TCalcClass1 }

function TCalcClass1.Calc( Menge : Extended ) : Extended;
  begin
    Result := Calc( Menge, Preis );
  end;

procedure TCalcClass1.SetPreis( const Value : Extended );
  begin
    FPreis := Value;
  end;

{ TCalcClass2 }

function TCalcClass2.Calc( Menge : Extended ) : Extended;
  begin
    Result := Calc( Menge, Preis );
  end;

constructor TCalcClass2.Create( Preis : Extended );
  begin
    inherited Create;
    FPreis := Preis;
  end;

end.
Für welches Modell der Umsetzung man sich entscheidet, hängt davon ab, was man erreichen möchte.
Ist bei der Berechnung der Preis auch an dem Ort bekannt, von wo aus die Berechnung angestossen wird, dann bietet sich eine einfache function Calc( Menge, Preis : Extended ):Extended; an.

Ist der Preis nur einer völlig anderen Stelle bekannt und sind dort Änderungen zu erwarten (erlaubt), dann wie TCalcClass1 .

Darf der Preis sich nicht ändern, dann wie TCalcClass2 .

Werden diese Berechnungsklassen jetzt weiterverwendet, so ist durch das Design schon klar, wie diese verwendet werden dürfen.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (14. Jan 2011 um 15:21 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Deep-Sea
Deep-Sea

Registriert seit: 17. Jan 2007
907 Beiträge
 
Delphi XE2 Professional
 
#15

AW: Problem mit einfügen einer function in procedure

  Alt 14. Jan 2011, 15:13
Den internen Variablen "erdgas" und "stadtgas" sollte man erst einmal ein "F" voranstellen und dann eine Property für jeden Wert anlegen und keine öffentliche Setter-Methode. Wir haben schließlich Delphi und net Java und Co.
(siehe Sir Rufo's Post ^^)
Chris
Die Erfahrung ist ein strenger Schulmeister: Sie prüft uns, bevor sie uns lehrt.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#16

AW: Problem mit einfügen einer function in procedure

  Alt 14. Jan 2011, 15:15
Sind das jetzt nicht ein bisschen viel Infos? Ich fürchte, dass wir den TE gerade etwas überfordern.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
wolfaa

Registriert seit: 14. Jan 2011
11 Beiträge
 
Delphi 7 Personal
 
#17

AW: Problem mit einfügen einer function in procedure

  Alt 14. Jan 2011, 15:23
also dei verschiedenen tarife wollte ich in der rechnung ungefähr so machen:

nur eine überlegung da fehlen noch ein paar sachen:
Delphi-Quellcode:
        function TGaskosten.erdgaspreisberechnen(a: real): real;
        begin
           if a<151 then
              begin
              a:= a*0.344;
              a:= a + (a*0.19);
              a:= a + 210;
              result:= a;
              end
           else
           if a> 400 then
              a:= a*0.255;
              a:= a + (a* 0.19);
              a:= a + 210;
           if a> 1999 then
              a:= a - 210;
        end;
erklärung: die verschiedenen tarife : bis 150 cbm gas: 0.344 euro pro cbm
und über 400 cbm kostet es 0.255 euro
zusatz: ab 2000 fällt die grundgebühr in höhe von 210 euro weg. und die mehwertsteuer wird bei allen berechnet
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#18

AW: Problem mit einfügen einer function in procedure

  Alt 14. Jan 2011, 15:27
Im Großen und Ganzen sieht das schon ganz gut aus, aber
- da fehlen begins und ends
- zwischen 151 und 400 m^3 kostet es nichts (?)
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
wolfaa

Registriert seit: 14. Jan 2011
11 Beiträge
 
Delphi 7 Personal
 
#19

AW: Problem mit einfügen einer function in procedure

  Alt 14. Jan 2011, 15:35
ist ja auch noch nicht fertig
zwischen 150 und 400 muss noch was
jaa da fehlen ends!!
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#20

AW: Problem mit einfügen einer function in procedure

  Alt 14. Jan 2011, 15:36
Besser so:
Delphi-Quellcode:
function TGaskosten.erdgaspreisberechnen(a: real): real;
  begin
    Result := 0;

    // Grundgebühr
    if a < 2000 then
      Result := Result + 210;

    // Verbrauch
    if a > 400 then
      Result := Result + a * 0.255
    else if a > 150 then
      Result := Result + a * 0.000 // Nach deinen Vorgaben geschenkt
    else
      Result := Result + a * 0.344;

    // Mehrwertsteuer
    Result := Result * 1.19;

  end;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:41 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