Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - kein gültiger integer wert
crossit - Fr 25.12.09 02:28
Titel: kein gültiger integer wert
tach alle zusammen,
erstmal frohe weihnachten euch und hier ist gleich mal meine frage
habe mehr als 50 edit felder die summiert werden sollen und überprüft werden ob eine zahl drinn ist. ich habe es mit trytostr ausprobiert und alles hatte auch ganz gut geklappt jedoch habe ich zb 18 editfelder die ausgerechnet werden und das doch eine relativ große schreibarbeit ist vllt kennt jmd eine kürzere variante
hier mein code
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| var zahl1,zahl2,zahl3,ergebnis : integer; begin
if TryStrToInt(edit1.Text, zahl1) and TryStrToInt(edit2.Text, zahl2) and TryStrToInt(edit3.Text, zahl3) then begin edit4.Text := IntToStr(zahl1 + zahl2+ zahl3) ; end else ShowMessage('Bitte nur Zahlen eingeben!');
end; |
BenBE - Fr 25.12.09 02:54
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| var X: Integer; Summe: Integer; E: TEdit; begin For X := 1 to 50 do Begin E := TEdit(FindComponent('Edit' + IntToStr(X))); If E <> nil then begin Summe := Summe + IntToStrDef(E.Text, 0); end; end;
EditErgebnis.Text := IntToStr(Summe); end; |
crossit - Fr 25.12.09 12:55
danke für deine antwort! mir ist ein fehler aufgefallen unzwar mus es strtointdef heißen
elundril - Fr 25.12.09 13:26
wie wäre es im KeyPress bzw KeyDown gleich mal nur zahlen eingeben zu lassen? also das der benutzer gar ned auf die idee kommen kann buchstaben einzugeben. ;)
lg elundril
crossit - Fr 25.12.09 14:04
wäre auch eine variante aber so ists auch in ordnung :D
habe noch eine frage unzwar wie kann ich die beiden zusammen addieren ?
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37:
| procedure tform1.r4; var X: Integer; Summe: Integer; E: TEdit; ergebnis2 : integer; begin For X := 10 to 11 do Begin E := TEdit(FindComponent('l' + IntToStr(X))); If E <> nil then begin Summe := Summe + strtointdef(E.Text, 0); end; end;
ergebnis2 := Summe; end;
procedure tform1.r5; var X: Integer; Summe: Integer; E: TEdit; ergebnis3 : integer; begin For X := 12 to 16 do Begin E := TEdit(FindComponent('l' + IntToStr(X))); If E <> nil then begin Summe := Summe + strtointdef(E.Text, 0); end; end;
ergebnis3 := Summe; end; |
Hugo343 - Fr 25.12.09 14:35
Wär das nicht besser wenn man für so viele Felder ein TStringgrid zu nehmen...?
crossit - Fr 25.12.09 15:53
top danke habe es hinbekommen!
Metschu - Fr 25.12.09 20:48
Eine andere Variante wäre noch, das man nur Zahlen in das entsprechende Feld eintragen kann:
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| procedure Teingabe.NurZahl(Sender: TObject; var Key: Char); begin if not (Key in [#8, '0'..'9']) then key := #0; end; |
Wenn du Komma-Zahlen brauchst:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| procedure Teingabe.Komma_Zahl(Sender: TObject; var Key: Char); var i:integer; begin if Key = '.' then Key := ','; for i:=1 to length((Sender as TlabeledEdit).Text) do if (copy((Sender as TlabeledEdit).Text,i,1)=',') and (key =',') then key:=#0; if NOT (Key in [#8, '0'..'9', ',']) then Key := #0; end; |
Gruß
Torsten
elundril - Sa 26.12.09 00:39
Metschu hat folgendes geschrieben : |
Wenn du Komma-Zahlen brauchst:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| procedure Teingabe.Komma_Zahl(Sender: TObject; var Key: Char); var i:integer; begin if Key = '.' then Key := ','; for i:=1 to length((Sender as TlabeledEdit).Text) do if (copy((Sender as TlabeledEdit).Text,i,1)=',') and (key =',') then key:=#0; if NOT (Key in [#8, '0'..'9', ',']) then Key := #0; end; |
Gruß
Torsten |
wozu so umständlich? ;)
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| procedure Teingabe.Komma_Zahl(Sender: TObject; var Key: Char); var i:integer; begin if Key = '.' then Key := ','; if pos(',', (Sender as TlabeledEdit).Text) > 0 then Key := #0; if NOT (Key in [#8, '0'..'9', ',']) then Key := #0; end; |
Metschu - Sa 26.12.09 13:25
elundril hat folgendes geschrieben : |
wozu so umständlich? ;) |
Form follows Function... :mrgreen:
Danke für den Tip, werde es übernehmen
Bergmann89 - Sa 26.12.09 15:55
elundril hat folgendes geschrieben : |
wozu so umständlich? ;)
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| procedure Teingabe.Komma_Zahl(Sender: TObject; var Key: Char); var i:integer; begin if Key = '.' then Key := ','; if pos(',', (Sender as TlabeledEdit).Text) > 0 then Key := #0; if NOT (Key in [#8, '0'..'9', ',']) then Key := #0; end; | |
das musst du aber trotzdem noch prüfen, ob die Komma oder Punkt gedrückt wurden. So kannst du keine Zahl mehr eingeben, wenn ein Komma drin steht ;)
MfG Bergmann.
elundril - Sa 26.12.09 16:22
stimmt, denkfehler, sorry. ich denke aber um diese uhrzeit kann man mir das verzeihen, oder? :)
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| procedure Teingabe.Komma_Zahl(Sender: TObject; var Key: Char); begin if Key = '.' then Key := ','; if (Key = ',') AND (pos(',', (Sender as TlabeledEdit).Text) > 0) then Key := #0; if NOT (Key in [#8, '0'..'9', ',']) then Key := #0; end; |
so sollte es jetzt passen.
lg elundril
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 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!