string, label, podmiana znaków w labelu zgodnie z znalezioną literą w stringu i jej numerem

0

Piszę grę, wisielec.
Wszystko już mam (90% programu), jednak męczę się z pewną pętlą.
Wpisane słowo do odgadnięcia to załóżmy "alaska"(wpisywany do edita), wciskam start i program zamienia ten wyraz na " " który jest wyświetlany w label'u. Zrobiłem tak że słowo do odgadnięcia jest zapisywane do oddzielnego stringa (var slowo:string; / slowo_edit:=slowo;). Po czym przystępuję do szukania wpisanych liter do drugiego edit'a w slowo typu string, odbywa się to w ten sposób:

 for i:=1 to length(slowo) do
  if slowo[i]=literka[1] then ...no i tutaj powinien program podmieniać znalezioną literkę w słowie z podłogą (_) biorąc pod uwagę miejsce na którym literka w słowie jest

. No i właśnie nie wiem co napisać po tym "then" napisałem coś takiego: labelek[i+1]:=literka[1]; no ale nie chce zadziałać?
Mógłbym uzyskać jakąś podpowiedź do rozwiązania tego problemu ?

0

Poczytaj o funkcji

 pos 
0

Sugerujesz że wyszukiwanie mi nie działa ? Funkcje Pos znam, jednak nie wiem jak podmienić odpowiedni znak z labela zgodnie z numerem znalezionego znaku w stringu

0
var s:string;//zmienna pomocnicza
s:=labelek.Caption;
s[i+1]:=literka[1];
labelek.Caption:=s;
0

dobra już kapnąłem się o co kaman no i działa ale nie działa gdy jest w slowie więcej niż jedna taka sama literka np.
wpisane słowo: alabama
szukana litera: a
wygląd label'a:
wygląd label'a po sprawdzeniu trafienia: a

a powinno być tak: a
a a a
daje to do pętli w tej sposób:

var
 literka: String;
 labelek,a: string;
 i,j, pose : Integer;

begin
 for i:=1 to length(slowo) do
   if Pos(literka, slowo[i])>0 then
    begin
      pose:=Pos(literka, slowo);
      labelek[pose*2-1]:=slowo[i];
      slowo_label.Caption:=labelek;
    end;
end; 

Co robię źle ??

0

poczytaj o funkcji

PosEx
0

Funkcja PosEx nie działa mi... jest jakieś inne rozwiązanie ??

1
var
 literka: Char;
 labelek,a: string;
 i,j, pose : Integer;

begin
 for i:=1 to length(slowo) do if slowo[i]=literka then labelek[i]:=literka;
 slowo_label.Caption:=labelek;
end; 
0

literka jest teraz typu Char,
zatem jak przypisać zawartość edita do literki typu char ?

0

Zgadywaną literkę wpisuje się do Edita?
literka:=Edit1.Text[1] (najpierw sprawdzić czy w edicie cokolwiek jest)
Zainteresuj się też funkcją StringReplace

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0