Delphi-PRAXiS
Seite 1 von 2  1 2   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Fragen zum aufstellen von Formeln (https://www.delphipraxis.net/196676-fragen-zum-aufstellen-von-formeln.html)

DelphiforIngBachelor 8. Jun 2018 13:21

Fragen zum aufstellen von Formeln
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo liebe Leute,

Ich bin ein kompletter Neuanfänger mit Delphi und Programmierung allgemein.
Nun muss ich aber für meinen Bachelor den ich eigentlich nächste Woche in der Tasche haben will ein Delphi Projekt erstellen.

Bei mir solls um eine Entscheidungshilfe zum Lüftungssystem abhängig von den Komforterwartung gehen.

Ich habe das Allgemeine Problem, dass bei mir vieles über Formeln läuft. Zum Beispiel: qv,ges = fws*(-0,002*ANE²+1,15+ANE+20)
ANE soll per Editfeld eingetragen werden.
fws ist abhängig von der Belegungsdichte und dem Wärmeschutz (nach EnEV). Daher sollen für die beiden Faktoren jeweils zwei Buttons erstellt werden. "gering" und "hoch".
Anschließend soll auf einen Weiteren Button geklickt werde der mir die oben genannte Formel ausrechnet und in einem Label angezeigt wird.
Wie teile ich den Buttons "gering" und "hoch" eine Zahl zu. mit welcher die oben genannte Formel ausgerechnet wird?
Habe mir das Layout gemäß dem Anhang vorgestellt.

Das ist mein Quellcode (der nicht funktioniert und nicht vollständig ist)

unit Unit2;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm2 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Edit1: TEdit;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Button5: TButton;
Label11: TLabel;
Label12: TLabel;
Label13: TLabel;
Label14: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);


private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;

var
Form2: TForm2;
Label13, Label14, Edit1: Real;

implementation

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);
begin
Label6.Caption := 'hoch';
Label13.Caption := '0,1' + StrToInt(Label13);
end;




procedure TForm2.Button2Click(Sender: TObject);
begin
Label6.Caption := 'gering';
Label13.Caption := '0,2' + StrToInt;

end;

procedure TForm2.Button3Click(Sender: TObject);
begin
Label7.Caption := 'hoch';
Label14.Caption := '0,2' + StrToInt;
end;

procedure TForm2.Button4Click(Sender: TObject);
begin
Label7.Caption := 'gering';
Label14.Caption := '0,1' + StrToInt;
end;

end.

Hoffe ihr könnt mir helfen! :)

TiGü 8. Jun 2018 13:53

AW: Fragen zum aufstellen von Formeln
 
Als kompletten Neuanfänger würde ich dich bitten dir dieses kostenlose E-Book anzuschauen:
https://downloads.delphi-treff.de/DelphiStarter.pdf

Jumpy 8. Jun 2018 14:17

AW: Fragen zum aufstellen von Formeln
 
Anstatt der hoch / gering Button, würde ich da eine Radiobox/Radiobutton einsetzen. Dann kannst du im Code sinngemäß sowas machen wie:

Wenn RadioboxWärmeschutzHoch.Selected dann fws=123 sonst fws=456

DelphiforIngBachelor 8. Jun 2018 15:48

AW: Fragen zum aufstellen von Formeln
 
Danke Für die Antworten. Habe das Problem gelöst bekommen. Stehe aber schon wieder vor dem nächsten.

Und zwar soll eine Fehlermeldung kommen wenn Angaben nicht getroffen wurden. Funktioniert auch für die Button Felder. Das einzige Problem stellt jetzt das Edit Feld dar. Wenn da nichts drin steht bekomme ich immer die Fehlermeldung dass '' kein Gleitkommawert ist.

Das sieht dann bei mir so aus:
--------------
procedure TForm2.Button5Click(Sender: TObject);
begin


Zahl1 := StrToFloat(Edit1.Text);

Label11.Caption := FloatToStr(BerechneFeuchteschutz(Zahl1,Zahl2,Zahl3 ));

if
Edit1.Text = ''
then
showmessage ('Bitte Geben sie die Nutzfläche an');
Label11.Caption := 'Fehlende Angaben';
if
Zahl2 = 0
then
showmessage ('Bitte machen Sie eine Angabe zum Wärmeschutz');
Label11.Caption := 'Fehlende Angaben';
if
Zahl3 = 0
then
showmessage ('Bitte machen Sie eine Angabe zur Belegungsdichte');
Label11.Caption := 'Fehlende Angaben';
end;


end.
---------------
Vielleicht könnt ihr helfen.

Redeemer 8. Jun 2018 23:19

AW: Fragen zum aufstellen von Formeln
 
Das heißt, dass du nichts in Edit1 eingegeben hast.

KodeZwerg 9. Jun 2018 00:10

AW: Fragen zum aufstellen von Formeln
 
Zitat:

Zitat von DelphiforIngBachelor (Beitrag 1404305)
Vielleicht könnt ihr helfen.

Delphi-Quellcode:
procedure TForm2.Button5Click(Sender: TObject);
begin
    if Edit1.Text = '' then // <- wenn Edit1 keinen Inhalt hat dann...
    begin // <- hiermit einen block anfangen der für die zeile drüber zuständig ist
      // alles was passieren soll wenn Bedingung (Edit1.Text = '') zutrifft kommt hier rein.
      showmessage ('Bitte Geben sie die Nutzfläche an');
      Label11.Caption := 'Fehlende Angaben';
      exit; // <- das bewirkt das die procedure TForm2.Button5Click vorzeitig beendet wird.
    end; // <- hier endet der Begin block, JEDES BEGIN BRAUCHT AUCH EIN END;!

    if Zahl2 = 0 then
    begin
      showmessage ('Bitte machen Sie eine Angabe zum Wärmeschutz');
      Label11.Caption := 'Fehlende Angaben';
      exit;
    end;

    if Zahl3 = 0 then
    begin
      showmessage ('Bitte machen Sie eine Angabe zur Belegungsdichte');
      Label11.Caption := 'Fehlende Angaben';
      exit;
    end;
   
    try
      Zahl1 := StrToFloat(Edit1.Text);
    finally
      Label11.Caption := FloatToStr(BerechneFeuchteschutz(Zahl1,Zahl2,Zahl3));
    end;
end;


end.
So vielleicht?

bytecook 9. Jun 2018 13:50

AW: Fragen zum aufstellen von Formeln
 
Um es zusammenzufassen:

Schritt 1)

Auf Inhalt / Gültigkeit der Editfelder prüfen. Quick'n'Dirty mt try / except / end auf vorhandene, respektive gültige Zahl prüfen..
Liegt keine Zahl vor (leer/ nichtnumerische Characters), würde ich das Editfeld im Except-Teil mit einer '0' vorbelegen...

Schritt 2) Bei Gültigkeit das Ergebnis ausgeben bzw eine Fehlerinfo mit Showmessage anzeigen.

Rollo62 9. Jun 2018 15:41

AW: Fragen zum aufstellen von Formeln
 
Ich würde schonmal raten zumindest die Berechnung als eigene Klasse in eine separate Unit auszulagern.
So kannst du das zumindest 100% Testen und deine Logik ist schon,al sauber getrennt von deiner Form, wenn sich da nochmal was ändert.

Delphi-Quellcode:
type
  TBerechnung = class
  private
      FEingabe1 : Integer
      FEingabe2 : Integer

  public
      function IsValid : Boolean;
      function Ergebnis : Double;
 
      property Eingabe1 : Integer
      property Eingabe2 : Integer
  end;

TBerechnung.IsValid : Boolean;
begin
    Result := (Eingabe1 <> 0) and (Eingabe2 <> 0); // Und was immer du da brauchst
end;

TBerechnung.Ergebnis : Double;
begin
    if IsValid then
        Result := Eingabe1 * Eingabe2  // Was immer du da brauchst
    else
        Result := NaN; // Wenn die Berechnung nicht möglich ist
end;

KodeZwerg 9. Jun 2018 19:58

AW: Fragen zum aufstellen von Formeln
 
Zitat:

Zitat von bytecook (Beitrag 1404343)
Liegt keine Zahl vor (leer/ nichtnumerische Characters), würde ich das Editfeld...

...eine Maske für Zahlen verpassen mit default Wert 0.

Ps: Ich glaube nicht das der TE (Delphi for Ing Bachelor) groß Interesse hat wie man es in Zukunft korrekt handhaben sollte sondern lediglich das sein "Problem" weg ist.

blawen 9. Jun 2018 20:14

AW: Fragen zum aufstellen von Formeln
 
Zitat:

Zitat von KodeZwerg (Beitrag 1404368)
Ps: Ich glaube nicht das der TE (Delphi for Ing Bachelor) groß Interesse hat wie man es in Zukunft korrekt handhaben sollte sondern lediglich das sein "Problem" weg ist.

Dies ist auch meine Vermutung. Von einem Bachelor Kandidaten würde ich mehr Engagement erwarten...


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:35 Uhr.
Seite 1 von 2  1 2   

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