Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Abfrage ob eingegebener Wert nur ein Charackter (https://www.delphipraxis.net/99410-abfrage-ob-eingegebener-wert-nur-ein-charackter.html)

Lotus 11. Sep 2007 21:31


Abfrage ob eingegebener Wert nur ein Charackter
 
Hallo, ich habe ein Problem bei einem Delphiprogramm!

Das Programm an sich gibt durch einen Button (zufällig) 26 Buchstaben in einer Tabelle aus! Wie der Zufall es so will sind diese natürlich ungeordnet und die Aufgabe besteht darin einen kleinen Suchbutton zu erstellen der anzeigen soll an welcher Stelle (in der Tabelle) der gesuchte Buchstabe vorhanden ist! Dies ist alles kein Problem gewesen und konnte ich realisieren, allerdings möchte ich jetzt noch abfangen das jmd dort ein Wort oder eine Zahl eingibt! Kurz gesagt ich möchte sagen das dort nur 1 Char eingegeben werden darf.. allerdings ist die Variable ein String! Ich wollte es folgendermaßen machen:

Delphi-Quellcode:
k:=AnsiUpperCase(e1.text); //Buchstabe der gesucht werden soll
if (length(k) < 2) and ( chr(strtoint(k)) > 91 ) then begin //Abfangen von Wörtern durch length und Zahlen
  e:=suche(k); //suche ist eine Funktion die halt durch die Variable k zum Ergebnis e wird
  e2.Text:=inttostr(e); // Ausgabe
end
  else e2.Text:='Bitte nur einen Buchstaben eingeben'; //Wenn Bedingung nicht erfüllt
end;
das kann natürlich nicht klappen da chr nur bei Characktern funktioniert und k ja ein string ist! wollte fragen ob es da eine möglichkeit gibt ( es gibt ja auch strtoint also warum nicht strtochr?) das zu realisieren! hoffe ihr könnt mir helfen >.<

mkinzler 11. Sep 2007 21:34

Re: Abfrage ob eingegebener Wert nur ein Charackter
 
Delphi-Quellcode:
if c in ( 'a'..'z') or c in ('A'..'Z')

Lotus 11. Sep 2007 21:43

Re: Abfrage ob eingegebener Wert nur ein Charackter
 
danke für die schneller antwort, allerdings habe ich noch nicht ganz so recht verstanden was du gemeint hast..
wofür brauch ich die neue Variable c? ich habs einmal mit k probiert, also

Delphi-Quellcode:
if k in ('A'..'Z') or k in ('a'..'z') then begin
e:=suche(k);
  e2.Text:=inttostr(e);
allerdings funktioniert das absolut nicht

mkinzler 11. Sep 2007 21:46

Re: Abfrage ob eingegebener Wert nur ein Charackter
 
c war als Platzhalter für den Charakter gedacht.

Matze 11. Sep 2007 22:01

Re: Abfrage ob eingegebener Wert nur ein Charackter
 
Hi,

das müsste so heißen (eckige Klammern)

Delphi-Quellcode:
if (c in ['a'..'z']) or (c in ['A'..'Z']) then
oder auch kürzer:

Delphi-Quellcode:
if c in ['a'..'z', 'A'..'Z'] then
Edit: Du musst natürlich auf den Datentyp achten:

Das könnte so aussehen:

Delphi-Quellcode:
var c: char;
begin
  c := AnsiUpperCase(Edit1.Text)[1];
  if c in ['a'..'z', 'A'..'Z'] then
oder auch so:

Delphi-Quellcode:
var c: string;
begin
  c := AnsiUpperCase(Edit1.Text);
  if c[1] in ['a'..'z', 'A'..'Z'] then

Lotus 11. Sep 2007 22:08

Re: Abfrage ob eingegebener Wert nur ein Charackter
 
alles schön und gut.. ich weiss allerdings immernoch nicht so recht wie ich c in mein programm mit einbinden soll.. ich hab jetzt die variable c als char definiert.. dann habe ich eure programmzeile eingefügt.. allerdings muss ich doch c noch irgendwie in verbindung mit dem textfeld (dem gesuchten buchstaben) bringen oder nicht? das funktioniert aber nicht da ich dem c kein edit.text zuweisen kann

Matze 11. Sep 2007 22:12

Re: Abfrage ob eingegebener Wert nur ein Charackter
 
Hallo,

während du geantwortet hast, habe ich meinen Beitrag editiert und genau das eingefügt. ;)

Lotus 14. Sep 2007 14:48

Re: Abfrage ob eingegebener Wert nur ein Charackter
 
wunderbar.. das hat mir sehr geholfen und ich bin auch weiter gekommen, allerdings ergab sich jetzt ein erneutes Problem! Wenn ich Arrays durchsuchen lasse.. weil ich ja aus Zufälligen Zahlen oder Buchstaben einen bestimmten suchen möchte, dann lass ich ihn ja bis Anzahl der Arrays+1 laufen! allerdings wenn ich jetzt nach einem Buchstabe suche der nicht vorhanden ist, dann kommt eine fehlermeldung:

Der Index war außerhalb des Arraybereichs! Is ja klar da ich Array+1 zaehle.. aber wie kann ich machen das dieser Fehler nich angezeigt wird?

DeddyH 14. Sep 2007 14:58

Re: Abfrage ob eingegebener Wert nur ein Charackter
 
Wieso +1?

Lotus 14. Sep 2007 15:10

Re: Abfrage ob eingegebener Wert nur ein Charackter
 
ok war falsch ausgedrückt.. guck hier

Delphi-Quellcode:
function suche(buchstabe:string):integer;
begin
  i:=1;
  while a[i] <> buchstabe do Inc(i);
  if i>nf then i:=-1;
  result:=i;
end;

abbruchbedingung wenn mein zähler größer als die constante nf der arrays.. also laeuft er einmal mehr durch!


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:07 Uhr.
Seite 1 von 2  1 2      

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