Programování v Object pascal

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

Zamčeno
radekzatec
nováček
Příspěvky: 5
Registrován: 12 srp 2016 17:11

Programování v Object pascal

Příspěvek od radekzatec »

Dobrý den,
mám úkol, naprogramovat hru v object pascal (jde o hru šibenice) celou jí mam naprogramovanou jen si nevím rady dvěmi drobnostmi.

Zaprvé potřebuji v této podobě kódu, aby zmačknutí tlačítka akceptovalo "A" i "Á" nebo "E", "É" i "Ě" nevím jak to provést.

Kód: Vybrat vše

procedure TForm1.Button10Click(Sender: TObject);
begin
     Button10.Enabled := False;
     DostatZnak('e');
     AktualizaceObrazku;
end;
Druhý problém je při ukládání slov do souboru vždy mi data uložené v souboru přepíše a uloží nové - potřebuji slova přidávat.

Kód: Vybrat vše

procedure TForm1.Button2Click(Sender: TObject); //Tlačítko přidat slovo
Var
   Slovo: String;
begin                            // Vstupní dotaz
     MessageDlg('Slova s více než 10 písmeny a méně než 3 písmena se nebudou brát v úvahu.', mtWarning, [mbOK], 0);
     if InputQuery('Přidat slovo, zadejte slovo', 'které chcete přidat do seznamu: ', Slovo) = True then
     begin
      if (Length(Slovo) > 2) and (Length(Slovo) < 10) then   // Zkontrolujeme velikost
        begin
          ListBox1.Items.Add(Slovo);  // Slovo přidáme
          ListBox1.Sorted := False;
          ListBox1.Sorted := True;
          ListBox1.Items.SaveToFile(Dirr + 'seznam_slov.txt'); // Uložíme
          Label3.Caption := IntToStr(ListBox1.Items.Count);  // Změníme zobrazený počet slov
        end;
     end;
end;
Děkuji za pomoc Radek
Uživatelský avatar
satik
Level 6
Level 6
Příspěvky: 3509
Registrován: 09 led 2015 12:49
Bydliště: Krkonoše
Kontaktovat uživatele:

Re: Programování v Object pascal

Příspěvek od satik »

Co dela funkce dostatznak?

Seznam slov by bylo dobry asi nejdriv nacist, abys v seznamu mel ty slova, co jsou v souboru, takhle je v souboru prepises jen tim, co je v seznamu.
PC: MSI RTX 4090 Suprim X, AMD Ryzen 9 7950x3D, ASUS Crosshair HERO X6670E, 64GB RAM@6000CL30, Fractal Define Torrent, Seasonic PRIME TX 1600W, SSD Seagate Firecuda 530 M2 2TB +
4TB + 4TB SATA Micron 5200 ECO
Periferie: Samsung Odyssey G9 Neo + 2x AOC AG271QG, Razer Deathadder, Ducky Shine7, Steelseries QcK+, Beyerdynamic MMX300, Valve Index
Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7408
Registrován: 23 pro 2010 09:23

Re: Programování v Object pascal

Příspěvek od faraon »

radekzatec píše: ListBox1.Items.SaveToFile(Dirr + 'seznam_slov.txt'); // Uložíme
Neexistuje tam něco jako "AppendToFile"?

Znaky s diakritikou se ti nenačtou vůbec, nebo je potřebuješ převést na tvar bez nabodeníček?
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)
radekzatec
nováček
Příspěvky: 5
Registrován: 12 srp 2016 17:11

Re: Programování v Object pascal

Příspěvek od radekzatec »

Načítá stisklé buton písmeno přímo ve hře.
Zde je screen hry https://ctrlv.cz/8ydA
Diakritiku Mi to načítá normálně jen nevím jak vyřešit že stisknuté "e" načte všechny "e" včetně diakritiky.

Kód: Vybrat vše

procedure TForm1.DostatZnak(C:Char);   // Postup, který skenuje slovo a přidá znak C, pokud je ve slově
Var
   I: Integer;
   Nalezeno: Boolean;
begin
     Nalezeno := False;
     for I := 1 to Length(PouziteSlovo) do  // Hledáme slovo
begin
     if UpperCase(PouziteSlovo[I]) = UpperCase(C) then begin StringGrid1.Cells[I - 1, 0] := C; Nalezeno := True; end;
end;
    if Nalezeno = False then StavZivota := StavZivota + 1;  // Pokud jsme znak nenašli, přidáme 1 do stavu života
end;
Tak práce se souborem je již vyřešena SATIK MOC díky

Řešení takto:

Kód: Vybrat vše

 ListBox1.Items.LoadFromFile(Dirr + 'seznam_slov.txt');
Celý kód pak takto:

Kód: Vybrat vše

procedure TForm1.Button2Click(Sender: TObject); //Tlačítko přidat slovo
Var
   Slovo: String;
begin                            // Vstupní dotaz
     MessageDlg('Slova s více než 10 písmeny a méně než 3 písmena se nebudou brát v úvahu.', mtWarning, [mbOK], 0);
     if InputQuery('Přidat slovo, zadejte slovo', 'které chcete přidat do seznamu: ', Slovo) = True then
     begin
      if (Length(Slovo) > 2) and (Length(Slovo) < 10) then   // Zkontrolujeme velikost
        begin
          ListBox1.Items.LoadFromFile(Dirr + 'seznam_slov.txt');
          ListBox1.Items.Add(Slovo);  // Slovo přidáme
          ListBox1.Sorted := False;
          ListBox1.Sorted := True;
          ListBox1.Items.SaveToFile(Dirr + 'seznam_slov.txt'); // Uložíme
          Label3.Caption := IntToStr(ListBox1.Items.Count);  // Změníme počet slov
        end;
     end;
end;
Uživatelský avatar
satik
Level 6
Level 6
Příspěvky: 3509
Registrován: 09 led 2015 12:49
Bydliště: Krkonoše
Kontaktovat uživatele:

Re: Programování v Object pascal

Příspěvek od satik »

Asi bych si pro kazdy pismenko ulozil pole s znakama, co mu odpovidaji a pri kontrole vyzkousel vsechny z toho pole a az pokud se ani jedno nenajde, tak to oznacil ze tam neni.
PC: MSI RTX 4090 Suprim X, AMD Ryzen 9 7950x3D, ASUS Crosshair HERO X6670E, 64GB RAM@6000CL30, Fractal Define Torrent, Seasonic PRIME TX 1600W, SSD Seagate Firecuda 530 M2 2TB +
4TB + 4TB SATA Micron 5200 ECO
Periferie: Samsung Odyssey G9 Neo + 2x AOC AG271QG, Razer Deathadder, Ducky Shine7, Steelseries QcK+, Beyerdynamic MMX300, Valve Index
Zamčeno
  • Podobná témata
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Pomoc s výběrem ntb na programování v .NET 25k
    od Kubasky » » v Rady s výběrem hw a sestavením PC
    1 Odpovědi
    3855 Zobrazení
    Poslední příspěvek od petr22

Zpět na „Programování a tvorba webu“