Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Kein Zugriff bzw. falscher Zugriff auf 1. Arrayelement


Blob - So 22.04.12 12:22
Titel: Kein Zugriff bzw. falscher Zugriff auf 1. Arrayelement
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:

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 - So 22.04.12 12:28

Hallo,
Groß- und Kleinbuchstaben sind unterschiedlich kodiert! D.h., du könntest mit

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 - So 22.04.12 12:55

Dankeschön, wieder was neues gelernt :D


finalizat0r - Mo 07.05.12 17:38

...oder einfach


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