Entwickler-Ecke
Sonstiges (Delphi) - Einen Punkt in ein Komma umwandeln !!
Freeman1982 - Mo 28.11.05 21:30
Titel: Einen Punkt in ein Komma umwandeln !!
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 - Mo 28.11.05 21:45
Delphi-Quelltext
1:
| if key = #046 then key := #044; |
Freeman1982 - Mo 28.11.05 21:52
Titel: Einen Punkt in ein Komma umwandeln !!
Danke hat super geklappt,
wo findet man diese Abkürzungen für die einzelnen Tasten??
MfG
Freeman
Amateur - Mo 28.11.05 22:08
das ganze nennt man
ASCII und wird in hexadezimalzahlen angegeben. d.h. #0 und der hexadezimalwerte des zeichens.
JayK - Mo 28.11.05 22:14
nee diese schreibweise mit #xxx ist mit den dezimalen Werten ;)
Grishnak - Mo 28.11.05 22:32
Man kann ja auch - verständlich - so schreiben:
Delphi-Quelltext
1:
| if key = '.' then key := ','; |
Amateur - 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
DaRkFiRe - 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!???
Amateur - 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....
BenBE - 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.
Lannes - 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.
Amateur - 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...
JayK - 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? :? :P) keine doppelten Anführungszeichen!) wird zu ' ;)
Amateur - 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
DaRkFiRe - 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
Amateur - 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...
Lannes - Mi 30.11.05 16:07
Hallo,
einfach mal testen:
Delphi-Quelltext
1: 2:
| if '-' in [','..'.'] then showmessage('"-" ist enthalten'); |
oder so :wink: :
Delphi-Quelltext
1: 2:
| if '-' in [','..#45] then showmessage('"-" ist enthalten'); |
DaRkFiRe - 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)); |
Amateur - 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...
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!