Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Hangman Problem (https://www.delphipraxis.net/110580-hangman-problem.html)

Dazek1x 20. Mär 2008 11:42


Hangman Problem
 
Ich bin grade dabei Hangman zu programieren. Allerdings habe ich ein problem, wenn ein buchstabe in einem Wort zweimal vorkommt. Bin über jede Hilfe dankbar.


Delphi-Quellcode:
v:= pos(b,x);            {x= das lösungswort}

if pos(b,x)<>0 then            
begin

delete(z,v,1);            
insert(b,z,v) ;  {z= das gesuchte wort in strichen, b= der geratene buchstabe}
edit1.Text:= z;
end;

Die Muhkuh 20. Mär 2008 11:47

Re: Hangman Problem
 
Hi und herzlich Willkommen in der DP :dp:

Als erstes: Verwende aussagende Variablennamen, dann blickst nicht nur Du besser durch, sondern auch wir, die Deinen Code begutachten müssen. :)

Das Problem ist, dass Dein Codeausschnitt nur einmal ausgeführt wird. Da Du aber mehrere Buchstaben ersetzen willst, brauchst Du hier eine Schleife.

Klaus01 20. Mär 2008 11:47

Re: Hangman Problem
 
Hallo,

ich könnte mir das so vorstellen:

Delphi-Quellcode:
for i:= 1 to length(x) do
  begin
   if x[i] = b then
     begin
       z[i] := b;
     end
  end
edit1.text := z;
Grüße
Klaus

Dazek1x 20. Mär 2008 11:50

Re: Hangman Problem
 
danke für die schnelle antwort. den code versteh ich nicht so ganz. was soll i sein und wo müsste ich den code einbauen.

Klaus01 20. Mär 2008 12:01

Re: Hangman Problem
 
i ist eine Laufvariable z.B vom Typ Byte oder Integer.
Sie wird benutzt um einzelne Zeichen des Strings anzusprechen.

Grüße
Klaus

Dazek1x 20. Mär 2008 12:06

Re: Hangman Problem
 
ich hab das jetzt so
Delphi-Quellcode:
for p:= 1 to length(x) do
  begin
   if x[p] = b then
     begin
       z[p] := b;
     end
  end
  edit1.text := z;
eingefügt. allerdings sagt er mir dann in dieser zeile
Delphi-Quellcode:
    z[p] := b;
[Fehler] Backu.pas(66): Inkompatible Typen: 'Char' und 'String'

angos 20. Mär 2008 12:13

Re: Hangman Problem
 
Zitat:

Zitat von Dazek1x
ich hab das jetzt so
Delphi-Quellcode:
for p:= 1 to length(x) do
  begin
   if x[p] = b then
     begin
       z[p] := b;
     end
  end
  edit1.text := z;
eingefügt. allerdings sagt er mir dann in dieser zeile
Delphi-Quellcode:
    z[p] := b;
[Fehler] Backu.pas(66): Inkompatible Typen: 'Char' und 'String'

Hi,

ich denke, dass du b als String delklariert hast, also
Delphi-Quellcode:
b: String;
z[p] ist aber nur das p-te Zeichen von z, und das ist vom Typ Char. du musst also entweder
- b als Char casten,:
Delphi-Quellcode:
z[p] := Chr(b);
oder
- das erste zeichen von b nehmen
Delphi-Quellcode:
z[p] := b[1];
Edit: Und wie Die Muhkuh schon gesagt hat, bennen deine Variablen um. da blickst du in ner Woche nicht mehr durch!

Dazek1x 20. Mär 2008 12:18

Re: Hangman Problem
 
vielen dank. so klappts.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:18 Uhr.

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