Autor Beitrag
Blob
Hält's aus hier
Beiträge: 5



BeitragVerfasst: So 22.04.12 12:22 
Huhu,

in der Schule müssen wir derzeit ein Hangman-Spiel programmieren. Um zu erkennen, ob ein Buchstabe im String vorhanden ist, habe ich diese Schleife:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
for i := 1 to length(suchwort) do
  begin
    if(suchwort[i] = charlookingfor) then
      begin
        wortstriche[i] := suchwort[i];
      end;

charlookingfor ist dabei ein einzelner Buchstabe, der mit jedem Arrayelement des suchwort-Strings verglichen wird.
wortstriche ist ein String, der für die Ausgabe gebraucht wird. Das ganze klappt auch wunderbar, nur wird der jeweils erste Buchstabe nie richtig erkannt, sogar wenn er doppelt vorkommt.

Beim Wort Tomatensuppe (2x t) wird nur das t an 5. Stelle erkannt, das am Anfang jedoch nicht.

Hat jemand eine Idee, wieso der Vergleich 1. Elements des Suchwortes mit dem Buchstaben immer fehlschlägt?


Gruß,

Blob

Moderiert von user profile iconNarses: Überflüssige Zeilenumbrüche/Leerzeilen entfernt.
Mathematiker
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2622
Erhaltene Danke: 1448

Win 7, 8.1, 10
Delphi 5, 7, 10.1
BeitragVerfasst: So 22.04.12 12:28 
Hallo,
Groß- und Kleinbuchstaben sind unterschiedlich kodiert! D.h., du könntest mit
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
for i := 1 to length(suchwort) do
  begin
    if (suchwort[i] = charlookingfor) or (suchwort[i] = upcase(charlookingfor))
    then
      wortstriche[i] := suchwort[i];      
  end;

das Problem umgehen.
Beste Grüße
Mathematiker
Blob Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: So 22.04.12 12:55 
Dankeschön, wieder was neues gelernt :D
finalizat0r
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 24
Erhaltene Danke: 1



BeitragVerfasst: Mo 07.05.12 17:38 
...oder einfach

ausblenden Delphi-Quelltext
1:
if UpCase(Suchwort[I]) = UpCase(CharLookingFor) then