Delphi-PRAXiS

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...

bytecook 10. Jun 2018 10:29

AW: Fragen zum aufstellen von Formeln
 
Zitat:

Zitat von KodeZwerg (Beitrag 1404368)
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.

Tja, deswegen auch QnD. Wenn man sich ernsthaft mit Delphi befasst, legt man sich ohnehin eine Komponentenableitung an, die nur numerische Eingaben inkl. deren Constraints
berücksichtigt. Hier gehts ja nur um einen Schnellschuss...

Die Ernsthaftigkeit würde ich ob des Zeitrahmens nicht (unbedingt) infrage stellen, wir kennen den TE zuwenig.
Funktion vor Design bei Quickshots, danach aufräumen. Wiewohl ich oft erlebt habe, dass Behelfslösungen ein Produkt überlebten :)

Delphi-Laie 10. Jun 2018 21:48

AW: Fragen zum aufstellen von Formeln
 
Wie kann man denn kurz vor dem Ingenieur-Bachelor stehen und Programmieranfänger sein? Sollte der Niveauverfall der Bildung tatsächlich schon so weit "gediehen" sein, daß so etwas möglich ist?

Rollo62 11. Jun 2018 06:00

AW: Fragen zum aufstellen von Formeln
 
Als Delphi Neunfänger würde ich nach diesem sinnlosem Bashing auch zu C# wechseln :stupid:

KodeZwerg 11. Jun 2018 06:54

AW: Fragen zum aufstellen von Formeln
 
Ich erwarte zwar keine Rose von einem Bachelor aber zumindest einen Kommentar ob denn ein Problem nun beendet ist bevor man schnurstracks das nächste Thema anfängt, soviel Anstand sollte man schon haben, ob Delphi oder C oder Asm spielt dabei keine Rolle.

freimatz 11. Jun 2018 13:29

AW: Fragen zum aufstellen von Formeln
 
Ich vermute mal eher der TE macht Bacheler in Holztechnik oder sowas und will das Projektchen nur noch als Sahnehäbchen drauf haben.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:49 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