AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Nur Integer Werte im Edit Fenster zulassen

Ein Thema von benisenis · begonnen am 20. Aug 2006 · letzter Beitrag vom 23. Aug 2006
Antwort Antwort
Seite 4 von 5   « Erste     234 5      
Muetze1
(Gast)

n/a Beiträge
 
#31

Re: Nur Integer Werte im Edit Fenster zulassen

  Alt 21. Aug 2006, 18:57
... und wozu dient die Zuweisung im Except-Block? Wie bewegen nix aus dem Edit und überschreiben auch nix...
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#32

Re: Nur Integer Werte im Edit Fenster zulassen

  Alt 22. Aug 2006, 11:06
Zitat von Muetze1:
Wie bewegen nix aus dem Edit und überschreiben auch nix...
Also wenn StrToInt fehlschlägt, dann müsste EdText gar nicht initialisiert worden sein, somit steht nachher wahrscheninlich nicht viel im Edit (wobei ich sagen muss, ich weiß grad gar nicht, ob ein String immer leer ist, wenn er nicht initialisiert ist, ich setze generell einen Wert).

Also der Code ist irgendwie wirklich nichts.
Ich würde Delphi-Referenz durchsuchenTryStrToInt oder Delphi-Referenz durchsuchenVal nehmen, da kann eigentlich nicht viel passieren. Dass auch Hexadazimalen Zahlen nicht als Integer angesehen werden, kannst du mit diesem Code erreichen.
  Mit Zitat antworten Zitat
Cöster

Registriert seit: 6. Jun 2006
589 Beiträge
 
Turbo Delphi für Win32
 
#33

Re: Nur Integer Werte im Edit Fenster zulassen

  Alt 22. Aug 2006, 11:45
Zitat von Matze:
Zitat von Muetze1:
Wie bewegen nix aus dem Edit und überschreiben auch nix...
Also wenn StrToInt fehlschlägt, dann müsste EdText gar nicht initialisiert worden sein, somit steht nachher wahrscheninlich nicht viel im Edit (wobei ich sagen muss, ich weiß grad gar nicht, ob ein String immer leer ist, wenn er nicht initialisiert ist, ich setze generell einen Wert).

Also der Code ist irgendwie wirklich nichts.
Warum nicht? Sicherlich ist der Code noch nicht perfekt (man sollte vor's Try noch If not (Edit1.Text = '') then setzen, aber er funzt. Am Anfang sollte das Edit-Feld natürlich leer sein. Dann kann man was eingeben. Es kann zu keinem Zeitpunkt etwas im Edit-Feld stehen, was kein Integer-Wert ist (wie es ja auch verlangt wurde).
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#34

Re: Nur Integer Werte im Edit Fenster zulassen

  Alt 22. Aug 2006, 12:10
Zitat:
[...] aber er funzt
Schon einmal versucht, als Erstes ein Komma einzugeben? Klar, "-" ist kein Integerwert, der User wird dir trotzdem an die Gurgel springen.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#35

Re: Nur Integer Werte im Edit Fenster zulassen

  Alt 22. Aug 2006, 12:23
Zitat von Cöster:
Warum nicht? Sicherlich ist der Code noch nicht perfekt (man sollte vor's Try noch If not (Edit1.Text = '') then setzen, aber er funzt. Am Anfang sollte das Edit-Feld natürlich leer sein. Dann kann man was eingeben. Es kann zu keinem Zeitpunkt etwas im Edit-Feld stehen, was kein Integer-Wert ist (wie es ja auch verlangt wurde).
Ok, wir fassen nochmal zusammen warum der Code nicht gut ist:

1. ein einfügen von Text erfolgt immernoch und würde bei dir eine Zuweisung mit undefinierten Daten ins edit bewirken (siehe Punkt 2)
2. Wenn StrToInt() einen Fehler meldet durch eine Exception, dann wird deine Variable EdText nicht initialisiert und du weist im Except-Block dem Edit einen undefinierten bzw. alten Wert zu.
3. Durch das Change Event wird es bei vielen Kombinationen die während der Eingabe auftreten (aber im Endeffekt gültig sind) zu Fehlern führen:
3a) führende Vorzeichen wie + und -
3b) Exponenten E
4. Welchen Sinn macht es bei einer fehlerhaften Eingabe den kompletten Inhalt des Edits zurück zu setzen? Das würde z.B. eine Eingabe verhindern bzw. unmöglich machen, welche während des Eingabevorgangs ungültig ist, aber im Zusammenhang mit der kompletten Eingabe wiederrum gültig.
  Mit Zitat antworten Zitat
Cöster

Registriert seit: 6. Jun 2006
589 Beiträge
 
Turbo Delphi für Win32
 
#36

Re: Nur Integer Werte im Edit Fenster zulassen

  Alt 22. Aug 2006, 16:13
Zitat von Muetze1:
Zitat von Cöster:
Warum nicht? Sicherlich ist der Code noch nicht perfekt (man sollte vor's Try noch If not (Edit1.Text = '') then setzen, aber er funzt. Am Anfang sollte das Edit-Feld natürlich leer sein. Dann kann man was eingeben. Es kann zu keinem Zeitpunkt etwas im Edit-Feld stehen, was kein Integer-Wert ist (wie es ja auch verlangt wurde).
Ok, wir fassen nochmal zusammen warum der Code nicht gut ist:

1. ein einfügen von Text erfolgt immernoch und würde bei dir eine Zuweisung mit undefinierten Daten ins edit bewirken (siehe Punkt 2)
2. Wenn StrToInt() einen Fehler meldet durch eine Exception, dann wird deine Variable EdText nicht initialisiert und du weist im Except-Block dem Edit einen undefinierten bzw. alten Wert zu.
3. Durch das Change Event wird es bei vielen Kombinationen die während der Eingabe auftreten (aber im Endeffekt gültig sind) zu Fehlern führen:
3a) führende Vorzeichen wie + und -
3b) Exponenten E
4. Welchen Sinn macht es bei einer fehlerhaften Eingabe den kompletten Inhalt des Edits zurück zu setzen? Das würde z.B. eine Eingabe verhindern bzw. unmöglich machen, welche während des Eingabevorgangs ungültig ist, aber im Zusammenhang mit der kompletten Eingabe wiederrum gültig.
1. nein, man kann keinen Text einfügen.
2. Wenn StrToInt einen Fehler meldet, wird der Text des Edit-Feldes wieder auf den Zustand von vor dem Change-Event gesetzt. Wenn im Edit-Feld also '234' steht und man dann ein 'b' eingeben will, bleibt '234' stehen.
3a)Das Problem kann man relativ leicht umgehen:
Delphi-Quellcode:
procedure TForm1.Edit1Change(Sender: TObject);
var temp: integer;
begin
  If (Edit1.Text = '') or (Edit1.Text = '-') or (Edit1.Text = '+') then
    EdText := Edit1.Text
  Else
    Try
      temp := StrToInt(Edit1.Text);
      EdText := Edit1.Text;
    Except
      Edit1.Text := EdText;
    end;
end;
3b) Ich ging davon aus, dass keine Exponenten zugelassen werden dürfen. Das würde "if not key in ..." ja auch nicht besser gehen.
4. Es wird ja nicht der komplette Inhalt des Edit-Feldes wieder zurückgesetzt. Nur der letzte Tastendruck (bzw. das letzte Einfügen per Strg+V oder Rechtsklick->Einfügen) wird ignoriert.

Das einzige, was nicht geht (aber wahrscheinlich auch nicht gehen soll, wenn der Edit-Inhalt als Integer-Wert weiterverarbeitet werden soll), ist mit 'E' zu rechnen. Wenn du das anders siehst, würde mich ein konkretes Beispiel interessieren.
  Mit Zitat antworten Zitat
Benutzerbild von TeronG
TeronG

Registriert seit: 19. Jul 2004
Ort: München
960 Beiträge
 
Delphi 2007 Professional
 
#37

Re: Nur Integer Werte im Edit Fenster zulassen

  Alt 22. Aug 2006, 16:48
OK ich gebe zu, daß ich nur die erste Seite gesichtet hab und somit evtl. was überlesen habe.... aber wenn ich nur Zahlen brauchen kann benutze ich immer gerne den TSpinEdit.
龍 Der Unterschied zwischen Theorie und Praxis ist in der Praxis größer als in der Theorie.
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#38

Re: Nur Integer Werte im Edit Fenster zulassen

  Alt 22. Aug 2006, 17:07
Zitat von TeronG:
OK ich gebe zu, daß ich nur die erste Seite gesichtet hab und somit evtl. was überlesen habe.... aber wenn ich nur Zahlen brauchen kann benutze ich immer gerne den TSpinEdit.
hast du http://www.delphipraxis.net/internal...=597635#597635

Aber naja, die einfachste Lösung wird mal wieder ignoriert

  Mit Zitat antworten Zitat
Benutzerbild von Lannes
Lannes

Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
 
Delphi 3 Professional
 
#39

Re: Nur Integer Werte im Edit Fenster zulassen

  Alt 22. Aug 2006, 21:11
Hallo,

für kleinere Zahlenbereiche ja, für größere nicht ideal, denn dazu muss man EditorEnabled auf false setzen, und man kann nichts mehr eingeben.
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#40

Re: Nur Integer Werte im Edit Fenster zulassen

  Alt 22. Aug 2006, 21:19
Zitat von Lannes:
für kleinere Zahlenbereiche ja, für größere nicht ideal, denn dazu muss man EditorEnabled auf false setzen, und man kann nichts mehr eingeben.
Kommt drauf an was du mit größeren Zahlenbereichen meinst... für nen Integer reichts allemal

  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 5   « Erste     234 5      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:51 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