![]() |
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! :) |
AW: Fragen zum aufstellen von Formeln
Als kompletten Neuanfänger würde ich dich bitten dir dieses kostenlose E-Book anzuschauen:
![]() |
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 |
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. |
AW: Fragen zum aufstellen von Formeln
Das heißt, dass du nichts in Edit1 eingegeben hast.
|
AW: Fragen zum aufstellen von Formeln
Zitat:
Delphi-Quellcode:
So vielleicht?
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. |
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. |
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; |
AW: Fragen zum aufstellen von Formeln
Zitat:
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. |
AW: Fragen zum aufstellen von Formeln
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:19 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz