![]() |
Galgenmännchen - Abfrageproblem -
Ich habe versucht ein Galgenmännchen Programm zu proggen. So erstmal zur Form, es gibt ein Edit1 Feld, wo ein Buchstabe eingegeben werden kann und es gibt ein BitButton1, mit dem dieser Buchstabe bestägigt werden kann. Zuvor wird per Zufallsprinzip ein Wort aus einer liste ausgewählt, dort funktioniert jedoch alles einwandfrei..das gesuchte wort ist eine String variabel mit der bezeichnung 'wort'
So auf dem BitButton mit dem der eingegebene Buchstabe bestätigt werden soll und somit das wort auf diesen geprüft werden soll liegt dieses Ereignis:
Delphi-Quellcode:
So die variable buchstabe ist der buchstabe der gerade geprüft werden soll. In der Form habe ich darunter 12 Buttons die jeweils für einen Buchstaben stehen. Wird nun also das wort (z.B. Drucker) auf 'r' gescannt, so müsste Button2.Caption dann 'r' sein und Button7.Caption auch 'r' sein.
procedure TForm1.BitBtn1Click(Sender: TObject);
var i, buchstabe, wlange:Integer; key:STring; begin key := Edit1.Text; buchstabe := 0; wlange := Length (wort); for i := 0 to (wlange) do begin inc (buchstabe); if Copy (wort, buchstabe, buchstabe) = key then begin TButton (FindComponent('Button' + IntToStr (buchstabe))).Caption := Copy (wort, buchstabe, buchstabe); end; end; end; Dies ist jedoch leider nicht so, es wird der erste buchstabe und der lezte richtig angezeigt, ich vermute das das was mit der for do schleife zu tun hat..aber ich bin mir nicht so sicher, vielleicht weiß einer von euch weiter... Gruß, htxmlx |
Re: Galgenmännchen - Abfrageproblem -
Schau Dir mal die Hilfe zu Copy an und überprüf mal was Du dort machst ;).
Generell ist Dein Code ein wenig komisch. Ich schreib hier mal die Sachen:
Delphi-Quellcode:
procedure TForm1.BitBtn1Click(Sender: TObject);
var i, buchstabe, wlange:Integer; key:STring; begin key := Edit1.Text; buchstabe := 0; wlange := Length (wort); for i := 0 to (wlange) do // Die Schleife wird in der Form "Anzahl der Buchstaben + 1" Mal ausgeführt. Du willst sie aber nur für jeden Buchstaben im String ausführen. Also entweder i := 1 to wlange oder i := 0 to (wlange - 1). begin inc (buchstabe); // Eigentlich ist das völlig unnötig. Weil Du hast doch schon eine Variable die bei jedem Schleifendurchlauf inkrementiert wird -> i. wenn du die for schleife von "1 to wlange" definierst, gehst du jeden einzelnen Buchstaben von Wort durch if Copy (wort, buchstabe, buchstabe) = key then // das Copy ist falsch und eigentlich auch total unnötig. Wenn Du Copy verwenden willst, dann schau Dir die Hilfe zu Copy an. Alternativ überleg mal: So ein String kann man auch als ein Array of Char sehen. Vielleicht kommst Du drauf was effektiver wäre :). begin TButton (FindComponent('Button' + IntToStr (buchstabe))).Caption := Copy (wort, buchstabe, buchstabe); // Das Gleiche wie oben. end; end; end; |
Re: Galgenmännchen - Abfrageproblem -
Hab den Fehler:
Du verwendest Copy falsch. Der dritte Parameter gibt die Anzahl der zufückgelieferten Zeichen zurück. Somit müsste bei Drucker nur der Letzte Buchstabe angezeigt werden. So ist es richtig:
Delphi-Quellcode:
Bernhard
Copy(wort, buchstabe, 1);
|
Re: Galgenmännchen - Abfrageproblem -
Ah ok danke erstmal, darauf das i für den buchstaben zu verwenden bin ich net gekommen...werd ich gleich mal tun. das mit dem copy werd ich auch nochmal überprüfen..
Gruß, htxmlx |
Re: Galgenmännchen - Abfrageproblem -
Super dankeschön...der haupt fehler lag am copy, ich hatte das anders im kopf das man (string, von, bis) macht...also danke nocmal für die hilfe derrichtige code sieht jetzt so aus:
Delphi-Quellcode:
Gruß, htxmlx
procedure TForm1.BitBtn1Click(Sender: TObject);
var i, wlange:Integer; key:STring; begin key := Edit1.Text; wlange := Length (wort); for i := 1 to (wlange) do begin if Copy (wort,i,1) = key then begin TButton (FindComponent('Button' + IntToStr (i))).Caption := key; end; end; end; |
Re: Galgenmännchen - Abfrageproblem -
Warum nicht einfach "Wort[i]" statt "Copy(wort, i, 1)"?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:37 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz