Autor |
Beitrag |
Freeman1982
      
Beiträge: 24
Windows XP
|
Verfasst: Mo 28.11.05 21:30
Hallo,
ich habe durch die Key Press Anweisung das eingeben von Buchstaben untersagt
Delphi-Quelltext 1: 2:
| if Key in['0'..'9','-',',',CHR(VK_DELETE), CHR(VK_BACK)] = False then Key := #0; |
jetzt möchte ich aber noch das wenn ich den Punkt drücke auf der Tastatur das automatisch das komma auftaucht
MfG
Freeman
Moderiert von Christian S.: Delphi-Tags hinzugefügt.
|
|
Amateur
      
Beiträge: 777
(Win98, WinMe) WinXP Prof
D3 Prof, D6 Pers, D2k5 Pers., Turbo C++ Explorer
|
Verfasst: Mo 28.11.05 21:45
Delphi-Quelltext 1:
| if key = #046 then key := #044; |
_________________ "Kein dummes Gerede. Kein Rumrätseln. Denkt an nichts anderes mehr, nur noch an das, was vor euch liegt. Das ist die wahre Herausforderung. Ihr müßt euch vor euch selbst schützen, Leute." (Rennes in "Cube")
Beiträge: >700
|
|
Freeman1982 
      
Beiträge: 24
Windows XP
|
Verfasst: Mo 28.11.05 21:52
Danke hat super geklappt,
wo findet man diese Abkürzungen für die einzelnen Tasten??
MfG
Freeman
|
|
Amateur
      
Beiträge: 777
(Win98, WinMe) WinXP Prof
D3 Prof, D6 Pers, D2k5 Pers., Turbo C++ Explorer
|
Verfasst: Mo 28.11.05 22:08
das ganze nennt man ASCII und wird in hexadezimalzahlen angegeben. d.h. #0 und der hexadezimalwerte des zeichens.
_________________ "Kein dummes Gerede. Kein Rumrätseln. Denkt an nichts anderes mehr, nur noch an das, was vor euch liegt. Das ist die wahre Herausforderung. Ihr müßt euch vor euch selbst schützen, Leute." (Rennes in "Cube")
Beiträge: >700
|
|
JayK
      
Beiträge: 1013
|
Verfasst: Mo 28.11.05 22:14
nee diese schreibweise mit #xxx ist mit den dezimalen Werten 
|
|
Grishnak
      
Beiträge: 221
Windows XP Home
Delphi 7 PE, Delphi 2005 PE
|
Verfasst: Mo 28.11.05 22:32
Man kann ja auch - verständlich - so schreiben:
Delphi-Quelltext 1:
| if key = '.' then key := ','; |
_________________ Mach' etwas idiotensicher und irgendjemand erfindet einen besseren Idioten!
|
|
Amateur
      
Beiträge: 777
(Win98, WinMe) WinXP Prof
D3 Prof, D6 Pers, D2k5 Pers., Turbo C++ Explorer
|
Verfasst: Mo 28.11.05 22:43
ja kann man aber irgenwie schreiben hier viele das mit den ascii werten also hab ich mir gedacht mach ich das auch mal.
und ja stimmt ist dezimal... ich habs sogar noch unter den dezimalwerten nachgeguckt... o man... naja egal
_________________ "Kein dummes Gerede. Kein Rumrätseln. Denkt an nichts anderes mehr, nur noch an das, was vor euch liegt. Das ist die wahre Herausforderung. Ihr müßt euch vor euch selbst schützen, Leute." (Rennes in "Cube")
Beiträge: >700
|
|
DaRkFiRe
      
Beiträge: 526
WinXP Home & Professional
C, C++, Delphi
|
Verfasst: Mo 28.11.05 23:09
Könnte mir jemand plausibel machen, warum man da unverständlicherweise den ASCII-Code hinschreibt um ihn dann mit dem # wieder zum Char zu wandeln, anstatt gleich ',' und '.' zu schreiben!???
_________________ Lang ist der Weg durch Lehren - kurz und wirksam durch Beispiele! Seneca
|
|
Amateur
      
Beiträge: 777
(Win98, WinMe) WinXP Prof
D3 Prof, D6 Pers, D2k5 Pers., Turbo C++ Explorer
|
Verfasst: Mo 28.11.05 23:34
ich schätz mal damit man wenn man mehrere zeichen ausschliessen will nicht jedes zeichen einzeln angeben muss sondern einfach ein intervall macht z.b.: [#035..#045] (keine ahnung was das ausschliesst). für die punkt dings wäre das sicher genug gewesen aber er hat ja oben schon viele zeichen ausgeschlossen. vielleicht ginge das mit den ascii codes viel einfacher....
_________________ "Kein dummes Gerede. Kein Rumrätseln. Denkt an nichts anderes mehr, nur noch an das, was vor euch liegt. Das ist die wahre Herausforderung. Ihr müßt euch vor euch selbst schützen, Leute." (Rennes in "Cube")
Beiträge: >700
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Mo 28.11.05 23:56
Stimmt so nicht ... Man kann Bereiche auch so mit Chars angeben ... '0'..'9' ist wohl der bekannteste Vertreter dieser Sorte ... Kaum ein normaler Mensch würde hier auf die Idee kommen und #48..#57 oder noch grausamer sogar #$30..#$39 zu schreiben ...
Generell gilt, dass man alle ASCII-Zeichen kleiner als 32 (also #0..#31 bzw. #$00..#$1F) als ASCII-schreibt, (wird anders nicht akzeptiert) und alles größer gleich 32 als normale String-Literale. Ausnahmen bestätigen die Regel.
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
Lannes
      
Beiträge: 2352
Erhaltene Danke: 4
Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
|
Verfasst: Di 29.11.05 00:40
Hallo,
und ich würde die Behandlung des Tausender-Trennzeichen in Editfeldern so codieren,
Delphi-Quelltext 1: 2:
| if key = ThousandSeparator then key := DecimalSeparator; |
dann ist es auch unter anderen Systemeinstellungen noch richtig.
_________________ MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
|
|
Amateur
      
Beiträge: 777
(Win98, WinMe) WinXP Prof
D3 Prof, D6 Pers, D2k5 Pers., Turbo C++ Explorer
|
Verfasst: Di 29.11.05 13:32
aber die sonderzeichen kann man ja wohl nicht mit '.'..'$' oder so angeben oder? darauf bezog sich meine antwort mit dem interval... dann muss man doch wieder die #xxx schreibweise nehmen... bei zahlen und buchstaben ist ja klar dass das auch mit 'A'..'Z' geht...
_________________ "Kein dummes Gerede. Kein Rumrätseln. Denkt an nichts anderes mehr, nur noch an das, was vor euch liegt. Das ist die wahre Herausforderung. Ihr müßt euch vor euch selbst schützen, Leute." (Rennes in "Cube")
Beiträge: >700
|
|
JayK
      
Beiträge: 1013
|
Verfasst: Di 29.11.05 15:16
bei dem $ weiß ich es nich, aber seit neuestem weiß ich, dass man ein ' im String so erhält: '''' ergibt '
also '' (zwei Apostrophen (oder Apostrophs?  ) keine doppelten Anführungszeichen!) wird zu ' 
|
|
Amateur
      
Beiträge: 777
(Win98, WinMe) WinXP Prof
D3 Prof, D6 Pers, D2k5 Pers., Turbo C++ Explorer
|
Verfasst: Di 29.11.05 16:45
naja ich mein in so nem intervall. wenn ich nen string hab der keine besonderen zeichen aber schon @ und so haben soll dann kann man ja schlecht ['%'..'$'] (ich kenn die tabelle net auswendig nur so als beispiel) schreiben sondern müsste doch den weg über [#060..#070] (auch hier weiss ich grad nicht was im intervall ist nur als beispiel) gehen. oder kennt delphi die tabelle und schließt alles was in der tabelle zwischen ['%'..'$'] liegt bei dieser schreibweise aus.
ich hoffe ich habs deutlich formuliert
_________________ "Kein dummes Gerede. Kein Rumrätseln. Denkt an nichts anderes mehr, nur noch an das, was vor euch liegt. Das ist die wahre Herausforderung. Ihr müßt euch vor euch selbst schützen, Leute." (Rennes in "Cube")
Beiträge: >700
|
|
DaRkFiRe
      
Beiträge: 526
WinXP Home & Professional
C, C++, Delphi
|
Verfasst: Di 29.11.05 18:55
Man weiß nicht, was alles in der Tabelle ist, ist als Programmierer eine schlechte Ausrede.
Schnell ein Programmsegment geschrieben, welches Dir die Zeichen dazwischen ausgibt - wie das geht, sollte jeder Delphianer wissen...
Wenn die Routine nicht sonderliche zeitkritisch ist, kann man die Liste erlaubter / verbotener Zeichen auch in einem String zusammenfassen und dann via POS(zeichen,erlaubte_oder_verbotene_zeichen) > 0 auf Existenz prüfen.
So bleibt man bei einer globalen Zeichenkette sogar recht flexibel.
MfG
_________________ Lang ist der Weg durch Lehren - kurz und wirksam durch Beispiele! Seneca
|
|
Amateur
      
Beiträge: 777
(Win98, WinMe) WinXP Prof
D3 Prof, D6 Pers, D2k5 Pers., Turbo C++ Explorer
|
Verfasst: Mi 30.11.05 15:24
ich weiss was alles in der tabelle ist ich weiss nur nicht an welcher stelle. glaubste ich lern das ding auswendig wenn ich es in meiner formelsammlung und im netz finden kann?
es ging mir ja nur um ein beispiel ob man sonderzeichen aus der ascii auch mit sonem intervall angeben kann d.h. ob delphi wenn ich ['.'..','] das intern umwandelt in [#044..#046] (oder wars andersrum? egal) und dann halt zeichen #044, #045 und #046 nicht annimmt oder ob die schreibweise halt nicht geht und nur mit zahlen und buchstaben funktioniert. denn man kann ja ['a'..'z'] schreiben aber ich hab noch nie das mit sonderzeichen so gesehen. deswegen ja meine frage ob delphi das macht oder nicht. denn ansonsten wäre das noch ein vorteil solche abfragen bei edits mit den #xxx werten zu machen...
ganz einfach darum geht es mir...
_________________ "Kein dummes Gerede. Kein Rumrätseln. Denkt an nichts anderes mehr, nur noch an das, was vor euch liegt. Das ist die wahre Herausforderung. Ihr müßt euch vor euch selbst schützen, Leute." (Rennes in "Cube")
Beiträge: >700
|
|
Lannes
      
Beiträge: 2352
Erhaltene Danke: 4
Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
|
Verfasst: Mi 30.11.05 16:07
Hallo,
einfach mal testen:
Delphi-Quelltext 1: 2:
| if '-' in [','..'.'] then showmessage('"-" ist enthalten'); |
oder so  :
Delphi-Quelltext 1: 2:
| if '-' in [','..#45] then showmessage('"-" ist enthalten'); |
_________________ MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
|
|
DaRkFiRe
      
Beiträge: 526
WinXP Home & Professional
C, C++, Delphi
|
Verfasst: Mi 30.11.05 18:24
@Lannes: genau das meine ich damit - einfach ausprobieren.
Ist es denn so schwer, mal sowas zu Debugging-Zwecken zu schreiben??? Auswendig lernen ist sowieso die falsche Methodik. Und wieso nachsehen, wenn man es mit einem Einzeiler programmieren kann:
Delphi-Quelltext 1:
| FOR I:=anfang TO ende DO CAPTION:=CAPTION+FORMAT(', ASCII: %d, CHAR: %s',I,CHR(I)); |
_________________ Lang ist der Weg durch Lehren - kurz und wirksam durch Beispiele! Seneca
|
|
Amateur
      
Beiträge: 777
(Win98, WinMe) WinXP Prof
D3 Prof, D6 Pers, D2k5 Pers., Turbo C++ Explorer
|
Verfasst: Mi 30.11.05 20:15
war ja auch nur ne frage weils gerade um das thema #xxx oder einfach '...' benutzen ging... klar kann ich es auch ausprobieren aber davon haben die anderen user ja auch nichts... naja egal werd ich es halt mal ausprobieren wenn ich zeit hab...
_________________ "Kein dummes Gerede. Kein Rumrätseln. Denkt an nichts anderes mehr, nur noch an das, was vor euch liegt. Das ist die wahre Herausforderung. Ihr müßt euch vor euch selbst schützen, Leute." (Rennes in "Cube")
Beiträge: >700
|
|