Autor Téma: Prosím pomoc  (Přečteno 237 krát)

Offline Radekzatec

  • Nováček
  • *
  • Příspěvků: 7
  • Karma: 0
Prosím pomoc
« kdy: 11-01-2018, 20:19:56 »
Programuji do školy hru "Šibenice". Respektive už jí mám celou hotovou až na jeden detail (teda dost důležitý).

Znaky s diakritikou i bez na jednom butonu.

Konkrétně zde je obrázek hry https://ctrlv.cz/8ydA.

Zde kód

1. Button - potřebuji aby po stisku "E" doplnil znaky "E"; "É" i "Ě"

Kód: Delphi [Vybrat]
  1. procedure TForm1.Button10Click(Sender: TObject);
  2. begin
  3.      Button10.Enabled := False;
  4.      DostatZnak('e');  // potřebuji e; é; ě - nevím jak
  5.      AktualizaceObrazku;
  6. end;
  7.  

2. zde je co dělá DostatZnak

Kód: Delphi [Vybrat]
  1. procedure TForm1.DostatZnak(C:Char);   // Postup, který skenuje slovo a přidá znak C, pokud je ve slově
  2. Var
  3.    I: Integer;
  4.    Nalezeno: Boolean;
  5. begin
  6.      Nalezeno := False;
  7.      for I := 1 to Length(PouziteSlovo) do  // Hledáme slovo
  8. begin
  9.      if UpperCase(PouziteSlovo[I]) = UpperCase(C) then begin StringGrid1.Cells[I - 1, 0] := C; Nalezeno := True; end;
  10. end;
  11.     if Nalezeno = False then StavZivota := StavZivota + 1;  // Pokud jsme znak nenašli, přidáme 1 do stavu života
  12. end;
  13.  
  14.  

Děkuji za pomoc Radek

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 3212
  • Karma: 30
    • Verze Delphi: XE7 professional
Re:Prosím pomoc
« Odpověď #1 kdy: 11-01-2018, 21:24:49 »
Nerozumiem, čo vlastne chceš. To ich má doplniť naraz všetky tri? Ak áno, tak si vytvor ďalšiu funkciu, ktorá bude mať jeden parameter a na základe jeho hodnoty vráti string.
Kód: Delphi [Vybrat]
  1. function Cosi(C:Char):string
  2. begin
  3.   If C = 'E' then
  4.     Result := 'E,É,Ě';
  5. end;

Nauč sa správne a dôsledne formátovať. V žiadnom prípade nepoužívaj v kóde češtinu. S výnimkou poznámok. Asi takto:
Kód: Delphi [Vybrat]
  1.  
  2. procedure TForm1.DostatZnak(C:Char);  // Postup, který skenuje slovo a přidá znak C, pokud je ve slově
  3. var
  4.   I: Integer;
  5.   Nalezeno: Boolean;
  6. begin
  7.   Nalezeno := False;
  8.  
  9.   for I := 1 to Length(PouziteSlovo) do  // Hledáme slovo
  10.   begin
  11.     if UpperCase(PouziteSlovo[I]) = UpperCase(C) then
  12.     begin
  13.       StringGrid1.Cells[I - 1, 0] := C;
  14.       Nalezeno := True;
  15.     end;
  16.   end;
  17.  
  18.   if Nalezeno = False then
  19.     StavZivota := StavZivota + 1;  // Pokud jsme znak nenašli, přidáme 1 do stavu života
  20. end;
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 1916
  • Karma: 78
    • Verze Delphi: D5,D2007, DXE, DXE2 + 2 poslední (Tokyo)
    • O Delphi v češtině
Re:Prosím pomoc
« Odpověď #2 kdy: 11-01-2018, 21:31:33 »
Jako že doplní správné písmena, pokud se písmeno bez diakritiky shoduje s písmenem bez diakritiky v tajence?

tj. něco jako
Kód: Delphi [Vybrat]
  1.   for i :=1 to length(tajenka) do
  2.   begin
  3.      if OdstranDia(zadanyznak) = OdstranDia(tajenka[i]) then
  4.         UkazZnak(i, tajenka[i]);
  5.   end;
  6.  

kde OdstranDia je funkce odstranujici diakritiku?
Embarcadero MVP - Czech republic

Offline Radekzatec

  • Nováček
  • *
  • Příspěvků: 7
  • Karma: 0
Re:Prosím pomoc
« Odpověď #3 kdy: 11-01-2018, 21:53:59 »
Stando děkuji za radu ano to jsem potřeboval abych v hledaném slově automaticky nahradil všechny samohlásky jedním znakem jak dlouhé tak krátké. při kliknutí na "e" se doplní do hledaného slova i "é" a "ě". jen nevím jak proceduru cosi neimplementuji do "DostatZnak" jinak díky za ukázku formátování. Jsem začátečník a nemuset to mít ve škole jako povinnost tak neprogramuji. Učit síťaře ve 4é letech programovat a ještě v Object pascal je mazec.

Díky.

 

S rychlou odpovědí můžete používat BB kódy a emotikony jako v běžném okně pro odpověď, ale daleko rychleji.

Jméno: E-mail:
Ověření:
Křestní jméno zpěváka Gotta: