Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Buchstaben dürfen nur einmal verwendet werden
Luzifer - Mo 10.08.09 15:22
Titel: Buchstaben dürfen nur einmal verwendet werden
Hi es geht mir um folgendes: Ich möchte ein Edit in welches man beliebigen Text eingeben kann, solange der Buchstaben noch nicht im Edit vorhanden ist, wobei Groß- und Kleinschreibung in der Hinsicht beachtet werden sollten, dass das große 'F' ebenfalls ausgeschlossen werden soll, wenn das kleine 'f' schon vorhanden ist.
Mein Lösungsansatz dafür ist folgender. (In der OnKeyPress vom Edit) Es funktioniert und is soweit wunderbar, aber die Frage: kann ich das noch eleganter lösen? Denn mal ehrlich: So schick sieht das nicht aus^^
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| for i:=1 to length(swort.text) do if ((ord(key)<91) and ((key = swort.text[i]) or (chr(ord(key)+32) = swort.text[i]))) or ((ord(key)>91) and ((key = swort.text[i]) or (chr(ord(key)-32) = swort.text[i]))) then begin Key:=#0; showmessage('Buchstabe schon vergeben'); break; end; |
Erläuterungen:
swort ist mein Edit
Ich habe die Eingabe bereits im Vorwege auf einfache Klein- und Großbuchstaben begrenzt.
Danke für eure Hilfe!
elundril - Mo 10.08.09 15:31
Delphi-Quelltext
1: 2: 3: 4:
| if pos(UpperCase(Key), Uppercase(swort.text)) > 0 then begin Key := #0; showmessage('Buchstabe schon vergeben'); end; |
wäre eine möglichkeit ;)
lg elundril
Luzifer - Mo 10.08.09 15:40
ja na klar! danke dir! ich war mit meinen Gedanken weiter gewandert als ich zu den Uppercase-functionen kam, weil ich die Buchstaben ja nicht ändern wollte, aber es geht ja auch so^^
BenBE - Mo 10.08.09 17:25
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| var RemainingChars : set of Char;
if Key = #8 then begin RemainingChars := RemainingChars - [swort.text[Length(swort.text)]]; end else if key in RemainingChars Then begin ShowMessage('Already used!'); key := #0; end else begin RemainingChars := RemainingChars + [key]; end; |
Narses - Mo 10.08.09 17:28
Moin!
Markierst du den Thread noch entsprechend, wenn dein Problem gelöst ist? Danke. ;)
cu
Narses
Luzifer - Mo 10.08.09 17:49
Auch eine sehr gute Lösung von Ben, danke dir!
na klar Narses^^
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 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!