Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Char bei Eingabe in Editfeld auf Wert überprüfen und Ausgabe
Anonymous - Sa 26.10.02 17:42
Titel: Char bei Eingabe in Editfeld auf Wert überprüfen und Ausgabe
Ich habe ein Editfeld zur Eingabe und eins zur Ausgabe.
Tippe ich z.B. "a" ein, so soll überprüft werde, ob der eingegebene Char "a".."z" oder "A".."Z" ist und NUR DANN ausgegeben werden (im zweiten Editfeld).
Wenn er z.B. ein "ä","2","!" o.ä. ist, so soll dieser Char NICHT NUR nicht ausgegeben, sondern auch im Eingabefeld nicht angezeigt werden.
Wie mach ich das? PLZ HELP
:!: P.S.: Bitte bedenken, dass ich Schüler bin (Stufe 11 eines Gymnasiums *stolz) und wir mit Delphi 6 erst vor 7 Wochen begonnen haben. Also bitte einfach und genau erklären, damit ich das auch verstehe :oops: *bitte nicht hauen
Tino - Sa 26.10.02 19:17
Hallo,
wozu ist dann eigentlich das zweite Edit-Feld vorhanden? Denn der Inhalt der beiden Feldern ist doch dann immer identisch. Außerdem würde ich für die Ausgabe von Informationen in den meisten Fällen ein tLabel benutzen.
Zum Problem: Das Edit-Feld hat ein Event namens
OnKeyPress. Dieses kannst Du benutzen um zu überprüfen ob das gedrückte Zeichen ok ist oder nicht:
Quelltext
1: 2: 3: 4: 5:
| procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin If not (Key in ['a'..'z', 'A'..'Z']) Then Key := #0; end; |
Gruß
TINO
Anonymous - Sa 26.10.02 19:21
Ungetestet
Quelltext
1: 2: 3: 4: 5: 6: 7:
| function NurAbc(s: String): String; var Chr: Char; begin if Length(s) > 0 then Chr := s[1]; if Chr in ['a'..'z', 'A'..'Z'] then Result := Chr else Result := ''; end; |
Wenn Zeichen nicht a bis z oder A bis Z ist, dann kommt ein leerer String zurück. Zeichen wird also ignoriert.
Es wird immer das erste Zeichen des Strings untersuch. Alle anderen Zeichen werden ignoriert. Ich hab hier mit Absicht Strings und nicht Chars in die Funktion eingebaut, da ein Char mindestens ein Zeichen zurückgeben muß.
Aufruf:
Quelltext
1: 2:
| Zeichen := 'w'; a := NurAbc(Zeichen); |
Anonymous - Sa 26.10.02 19:22
Upps. Es ging um ein Editfeld.
Anonymous - So 27.10.02 11:44
Also eigentlich soll das ganze Programm eine ENIGMA-Maschine für die Minifacharbeit werden werden.
Da aber nichts von dem was ich in diesem Programm an Befehlen etc. brauche im Untericht bisher drangekommen ist, habe ich erstmal auf eigene Faust einfach begonnen: Die Eingabe des Klartextes (1. Editfeld).
Denn bei der ENIGMA konnte nur "A".."Z" eingetippt werden. Bei meinem Programm soll das auch so sein. Also muss ich ja die Eingabe auf "A".."Z" überprüfen.
Im 2. Editfeld soll dann die Verschlüsselung ausgegeben werden (doch das kommt erst VIEL VIEL VIEL VIEL später). Also lass ich dort erstmal nur die Chars ausgeben, die "A".."Z" sind.
Hoffe jetzt ist es klarer!
Tino - So 27.10.02 20:38
Hast Du denn noch ne Frage zu diesem Thema?
Gruß
TINO
Anonymous - Mo 28.10.02 18:52
Ich bins nochmal (...oder schon wieder :D)!
Also erstmal:
DANKE für die bisherige Tipps, haben mich weitergebracht.
Stand der Dinge:
1. Habe 2 Memo- NICHT Editfelder (SORRY, mein Fehler :oops:)
2. Memofeld 1 ist für Eingabe des zu verschlüsselnden Textes
3. Memofeld 2 ist für die kodierte Nachricht
4. Im Memofeld 1 werden nur die Chars "a".."z","A".."Z",' ',#13 "gewertet"
Soweit, so gut!
Fragen:
1. Welche ASCII-Nummer haben "Entf" und "<--" (über "Enter")?
2. Wie kann ich in Memofeld 1 über die "Löschen" im Text "zurückgehen"?
Danke im Voraus
D0P3 F!$H
Delete - Mo 28.10.02 19:19
ASCII-Tabelle [
http://www.logosec.de/ascii.htm]
Backspace = #8, es geht aber auch der virtuelle Key-Code VK_BACKSPACE, glaube ich.
Entf hat den virtuellen Key-Code VK_DELETE.
Stehen aber auch alle in der Hilfe.
Anonymous - Do 31.10.02 20:31
Ich bins scho wieda (jaja is mir klar :oops: !)
Neue Frage:
Bei der Enigma will ich die Walzeneinstellungen (Reihenfolge der Buchstaben, Verknüpfter Buchstabe auf der Walze, Position auf der Walze) in einem Array speichern.
Aus Pascal kenne ich Arrays noch so:
Quelltext
1:
| ErsteWalze : ARRAY [1..78] OF CHAR; |
Doch wie kann ich beispielsweise in das Array 'A' oder "J" reinbringen? Mache ich das so
ErsteWalze : ARRAY ['A','G','4'] OF CHAR; (Der Buchstabe '
A' steht an der
4. Position der Walze und ist mit '
G' verknüpft)
gibst die Fehlermeldung, dass Delphi "
.." nach 'A' erwartet.
Wie wird das nun mit den Walzeneinstellungen gemacht, oder geht das gar nicht?
Bitte helfen :roll:
MfG
D0P3 F!$H
Anonymous - Do 31.10.02 21:14
Hier muß ich wirklich sagen: Besorg dir ein Anfängerbuch. Das sage ich obwohl ich diesen Satz hasse und mich mit jedem anlege der den Satz sagt.
Es gibt einige Möglichkeiten:
Quelltext
1: 2: 3: 4: 5: 6: 7:
| var abc: array[1..3] of Char; begin abc[1] := 'a'; abc[2] := 'b'; abc[3] := 'c'; end; |
die Zweite ist:
Quelltext
1: 2: 3: 4: 5:
| var abc: array[1..3] of Char = ('A', 'B', 'C'); begin ... end; |
Anonymous - Fr 01.11.02 10:57
THX!
Hat geklappt ... Ich habe ein Anfängerbuch ("Objektorientierte Programmierung mit Delphi Band 1"), aber da kommen nur Timer, Buttons, Images, Zeichnungen und dann Programme (Minipaint, Taschenrechner etc.) vor :oops: (jaja ich weiss, dass ich jetzt ausgelacht werde).
Wir sind erst beim Zeichnen :cry: und das ist so LANGWEILIG (und das kommt in der Klausur auch noch dran *mitkopfgegendiewandrenn*).
Da habe ich auch schon nach Arrays geguckt, die kommen aber nicht drin vor *ineckerennundsehrsehrschäm*.
Tino - Fr 01.11.02 21:15
D0P3 F!$H hat folgendes geschrieben: |
Ich bins scho wieda (jaja is mir klar !)
Neue Frage: |
In Zukunft bitte für jede nicht zum Thema passende Frage ein neues Topic erstellen!
Gruß
TINO
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!