| Autor |
Beitrag |
MilKeeway
Hält's aus hier
Beiträge: 9
|
Verfasst: Mo 02.11.09 02:59
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
schon mal danke :) Moderiert von Narses: Topic aus VCL (Visual Component Library) verschoben am Mo 02.11.2009 um 14:42
|
|
platzwart
      
Beiträge: 1054
Erhaltene Danke: 78
Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
|
Verfasst: 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; |
_________________ Wissenschaft schafft Wissenschaft, denn Wissenschaft ist Wissenschaft, die mit Wissen und Schaffen Wissen schafft. (myself)
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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
      
Beiträge: 1098
Erhaltene Danke: 13
Win7 geg. WInXP oder sogar Win98
Rad2007
|
Verfasst: 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
      
Beiträge: 660
Erhaltene Danke: 21
Win XP, Win7, Win 8
D7 Enterprise, Delphi XE, Interbase (5 - XE)
|
Verfasst: 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
_________________ Ich habe nichts gegen Fremde. Aber diese Fremden sind nicht von hier! (Methusalix)
Warum sich Sorgen ums Leben machen? Keiner überlebts!
|
|
MilKeeway 
Hält's aus hier
Beiträge: 9
|
Verfasst: 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
      
Beiträge: 1098
Erhaltene Danke: 13
Win7 geg. WInXP oder sogar Win98
Rad2007
|
Verfasst: Mo 02.11.09 21:44
|
|
MilKeeway 
Hält's aus hier
Beiträge: 9
|
Verfasst: 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 
|
|