AGB  ·  Datenschutz  ·  Impressum  







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

Eingabe von Buchstaben verhindern

Ein Thema von Aike · begonnen am 27. Jan 2005 · letzter Beitrag vom 27. Jan 2005
Antwort Antwort
Seite 1 von 2  1 2      
Aike

Registriert seit: 2. Okt 2004
319 Beiträge
 
#1

Eingabe von Buchstaben verhindern

  Alt 27. Jan 2005, 21:13
Tach

ich wollte mal wissen, wie ich verhindern kann, dass jemand Buchstaben in mein Edit-Feld eingibt. Das habe ich so probiert, ging aber nicht:
Delphi-Quellcode:
procedure TfrmRechner.edEingabeKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var i:integer;
    buchstabe:boolean;
    Zahl:array[0..9] of integer;
begin
  buchstabe:=false;

  for i:=0 to 9 do
    zahl[i]:=i;
  
  for i:=0 to 9 do
  begin
    if Key<>zahl[i] then
      buchstabe:=true;
    if Key=zahl[i] then
      buchstabe:=false;

    if not Buchstabe then
      break;
  end;

  if Buchstabe then
    Key:=0; //was besseres ist mir nicht eingefallen. gibt 's denn sowas wie Key:=''?
end;
Achim
  Mit Zitat antworten Zitat
stefan2005

Registriert seit: 30. Sep 2003
Ort: Puchheim
250 Beiträge
 
Delphi 6 Personal
 
#2

Re: Eingabe von Buchstaben verhindern

  Alt 27. Jan 2005, 21:19
hi,
ähh also ich glaube dass die Variable "Key" den ASCII-Code enthält.
und Zahlen haben folgende ASCII-Codes:

0: 30
1: 31
.. ..
9: 39

=> nicht von 0 bis 9 sonder von 30 bis 39 überprüfen ob eine Zahl eingegeben wurde

ich hoff das Stimmt

außerdem musst du diesen Quellcode im OnKeyPress Event einfügen und nicht im OnKeyDown Event

cu,
stefan2005
  Mit Zitat antworten Zitat
Benutzerbild von malo
malo

Registriert seit: 19. Sep 2004
2.115 Beiträge
 
#3

Re: Eingabe von Buchstaben verhindern

  Alt 27. Jan 2005, 21:28
Wenn du verhindern willst, dass ein Buchstabe EINGETIPPT wurde, kannst du es doch ganz einfach so machen:

Delphi-Quellcode:
(if key = '0') or (if key = '1') or (if key = '2') or (if key = '3') or (if key = '4') or ... (if key = '9') then
  Buchstabe := false
  else
    Buchstabe := true;
  Mit Zitat antworten Zitat
m.wollert

Registriert seit: 18. Aug 2003
Ort: Heilbronn
92 Beiträge
 
FreePascal / Lazarus
 
#4

Re: Eingabe von Buchstaben verhindern

  Alt 27. Jan 2005, 21:29
Delphi-Quellcode:
const CKeys = ['0'..'9'];
begin
  if Key not in CKeys then Key := #0; // Key := #0 -> Key beinhaltet 'nichts' (wobei nichts ja auch nicht richtig ist - es beinhaltet ja den Wert "0" ;)
end;
Ich hoffe das passt gleich, habe kein Delphi offen. Solltest aber bedenken, daß Du auch noch die Back-Space-Taste drücken können solltest - erweiter dann die Konstante einfach so:
const CKeys = ['0'..'9', #9, #8]; // etc... Sollte es nicht klappen dann musst Du mit dem Code etwas rumtüfteln. Zudem muss ich Stefan2005 mit dem Ereignis zustimmen.

MfG Michael Wollert
Michael
  Mit Zitat antworten Zitat
Aike

Registriert seit: 2. Okt 2004
319 Beiträge
 
#5

Re: Eingabe von Buchstaben verhindern

  Alt 27. Jan 2005, 21:30
Und was soll passieren, wenn 's ein Buchstabe ist?
Achim
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#6

Re: Eingabe von Buchstaben verhindern

  Alt 27. Jan 2005, 21:31
Hallo,

wie bereits erwaehnt wurde, ist in der Variable "Key" der ASCII-Code des Zeichens enthalten.
Folgende solltest du erlauben: 48 ('0') bis 57 ('9'), 9 (Backspace) und evtl. 13 (Return).
Also fragst du ab:
Delphi-Quellcode:
if Key not in [9, 13, 48..57] then
  Key := 0;
Sollte so eigentlich funktionieren.

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
m.wollert

Registriert seit: 18. Aug 2003
Ort: Heilbronn
92 Beiträge
 
FreePascal / Lazarus
 
#7

Re: Eingabe von Buchstaben verhindern

  Alt 27. Jan 2005, 21:34
Hallo nochmal,

im OnKeyPress-Event ist Key vom Typ "Char", d.h. Du musst eine Typenkonvertierung durchführen wenn Du auf einen Ascii-Wert hin vergleichen möchtest - dies erreichst Du mit einer einleitenden Raute (#0 = $0)

MfG Michael Wollert
Michael
  Mit Zitat antworten Zitat
Aike

Registriert seit: 2. Okt 2004
319 Beiträge
 
#8

Re: Eingabe von Buchstaben verhindern

  Alt 27. Jan 2005, 21:36
if Key not in CKeys then liefert mir folgenden Fehler:
Operator oder Semikolon fehlt
Operator ist auf diesen Operandentyp nicht anwendbar
Achim
  Mit Zitat antworten Zitat
Benutzerbild von malo
malo

Registriert seit: 19. Sep 2004
2.115 Beiträge
 
#9

Re: Eingabe von Buchstaben verhindern

  Alt 27. Jan 2005, 21:36
Man könnte doch eigentlich auch alle Zeichen von 65 bis 255 sperren, dann braucht man sich doch keine Sorgen mehr drum zu machen, ob noch wichtige Tastencodes dazwischen sind, oder? Oder kommen noch Sonderzeichen vor #65?

also so:

Delphi-Quellcode:
if not key in [65..255] then
  Buchstabe := false else
    Buchstabe := true;
  Mit Zitat antworten Zitat
Benutzerbild von malo
malo

Registriert seit: 19. Sep 2004
2.115 Beiträge
 
#10

Re: Eingabe von Buchstaben verhindern

  Alt 27. Jan 2005, 21:37
Zitat von Aike:
if Key not in CKeys then liefert mir folgenden Fehler:
Operator oder Semikolon fehlt
Operator ist auf diesen Operandentyp nicht anwendbar
versuchs mal so:

if not key in CKeys then
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 22:38 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