Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Für mehrere IF THEN Anweisungen 1 schreiben?
MilKeeway - Mo 02.11.09 02:59
Titel: Für mehrere IF THEN Anweisungen 1 schreiben?
Heyy
hab ein Problem. Ich hab ein Programm zur Flächenberechnung. Nun kann man in den Labelededit Feldern die Länge der Maße eingeben, auf den Button klicken und der rechnet das dann aus.
Wenn man ein Feld vergisst kommt eine MessageBox wo drinnen steht: '' ist kein gültiger Gleitkommawert.
Nun möchte ich nicht 20mal reinschreiben
Delphi-Quelltext
1: 2: 3:
| if lblx.Text:='' then Application.MessageBox (bla, bla, 16); exit; |
Also ich möchte, falls eines oder mehrere Felder leer sind, das eine MessageBox kommt und ich nicht immer den oben genannten Code verwenden muss.
HOffe ihr versteht was ich meine :D
schon mal danke :)
Moderiert von
Narses: Topic aus VCL (Visual Component Library) verschoben am Mo 02.11.2009 um 14:42
platzwart - Mo 02.11.09 03:08
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| If (lbl1.Text = '') or (lbl2.Text = '') or (lbl3.Text = '') or ... (lblx.Text = '') then begin Application.MessageBox (bla, bla, 16); Exit; end; |
jaenicke - Mo 02.11.09 03:37
MilKeeway hat folgendes geschrieben : |
| Also ich möchte, falls eines oder mehrere Felder leer sind [...] |
Und was machst du, wenn jemand reinschreibt 'abc'? Wie wäre es, wenn du lieber schaust, ob da eine Zahl drinsteht?
Und dann ist es äußerst ungünstig, wenn du deinen Quelltext unnötig kryptisch schreibst. Wie lange kannst du wohl mit der Zahl 16 etwas anfangen? Schreib das doch lieber lesbar hin...
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| if not (TryStrToFloat(lblSideA.Text, SideA) and TryStrToFloat(lblSideB.Text, SideB) and TryStrToFloat(lblSideB.Text, SideB)) then begin Application.MessageBox(bla, bla, MB_ICONERROR or MB_OK); Exit; end; |
Tilo - Mo 02.11.09 09:12
MilKeeway hat folgendes geschrieben : |
Nun möchte ich nicht 20mal reinschreiben
Delphi-Quelltext 1: 2: 3:
| if lblx.Text:='' then Application.MessageBox (bla, bla, 16); exit; |
|
Zur Lösung des Problems führt wenn Du erstmal das hervorgehobene Zeichen entfernst.
Um jetzt nicht für jedes Edit Element eine Prüfung auf leer oder ungültig einzeln zu schreiben kannst Du in einem Array Verweise auf die jeweiligen Edits hinterlegen. Bei der Prüfung iterierst Du dann das Array durch und kannst so für alle Edits die Prüfung machen. Wenn ein zusätzliches Edit geprüft werden soll, so must Du dieses nur dem Array anfügen.
Anstatt eines Array können natürlich auch andere Strukturen genutzt werden.
zuma - Mo 02.11.09 09:34
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| procedure pruefeAufZahlenEingabe(Sender: TEdit); var aValue : double; begin if not (Sender.Text = '') then begin if not TryStrToFloat(Sender.Text, aValue) then Sender.Text := '0'; end else Sender.Text := '0'; end; |
Jedes Eingabefeld für Zahlen wird mit '0' in der Eigenschaft 'Text' im Objektinspektor vorbelegt
bei jedem Eingabefeld im 'OnExit' einfach
Delphi-Quelltext
1:
| pruefeAufZahlenEingabe(DeinEditFeldName); |
Zur Laufzeit ist dann immer eine 0 oder eine gültige Zahleneingabe im Editfeld
MilKeeway - Mo 02.11.09 15:08
Danke an euch (:
Hab jetzt den IF Code von Platzwart verwendet und die MB-Buttons von Jaenicke.
@ Jaenicke: Ich hab ein KEyPress Ereignis geschrieben dass man nur Zahlen, Komma und - eingeben kann. Also ist es gar nicht möglich Buchstaben einzugeben.
danke nochmal :)
Tilo - Mo 02.11.09 21:44
MilKeeway hat folgendes geschrieben : |
Danke an euch (:
Hab jetzt den IF Code von Platzwart verwendet und die MB-Buttons von Jaenicke.
@ Jaenicke: Ich hab ein KEyPress Ereignis geschrieben dass man nur Zahlen, Komma und - eingeben kann. Also ist es gar nicht möglich Buchstaben einzugeben.
danke nochmal :) |
Hast Du geprüft, dass dadurch auch Strg+V abgefangen wird?
MilKeeway - Mi 04.11.09 15:47
jaa hab ich. Eingaben können nur in Form von Zahlen gemacht werden (:
bin jetzt auch fast fertig, muss nur noch die restlichen Codes fertigschreiben und dann kanns mein Vater benutzen :D
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!