Programování v Object pascal Vyřešeno

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

radekzatec
nováček
Příspěvky: 5
Registrován: srpen 16
Pohlaví: Muž

Programování v Object pascal  Vyřešeno

Příspěvekod radekzatec » 11 led 2018 18:07

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



Reklama
Uživatelský avatar
satik
Level 5.5
Level 5.5
Příspěvky: 2883
Registrován: leden 15
Bydliště: Praha / Krkonoše
Pohlaví: Muž

Re: Programování v Object pascal

Příspěvekod satik » 11 led 2018 18:32

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.
https://www.facebook.com/peasantsandcastles/
https://www.twitch.tv/satikcz/
https://www.youtube.com/c/SatikCZE
PC: Intel Core i7 8700K@5GHz+EK KIT L360, ASUS Maximus X HERO, 32GB RAM@3466, MSI GTX 1080Ti Gaming, Fractal Define S, Seasonic P860, SSD 2TB celkem
Periferie: 3x AOC AG271QG (1440p 165Hz IPS), Razer Deathadder+Blackadder Chroma, Steelseries QcK+, Sennheiser PC360, DXRACER OH/KF06/NB

Uživatelský avatar
faraon
Master Level 8
Master Level 8
Příspěvky: 6231
Registrován: prosinec 10
Pohlaví: Muž

Re: Programování v Object pascal

Příspěvekod faraon » 11 led 2018 18:45

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?
Hlášení při minulé aktualizaci Linuxu:
Po této operaci bude na disku použito dalších 1 024 B.
Děsně to bobtná :lol:

Hlášení při dnešní aktualizaci:
Po této operaci bude na disku uvolněno 13,7 MB.
No proto!

radekzatec
nováček
Příspěvky: 5
Registrován: srpen 16
Pohlaví: Muž

Re: Programování v Object pascal

Příspěvekod radekzatec » 11 led 2018 18:55

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 5.5
Level 5.5
Příspěvky: 2883
Registrován: leden 15
Bydliště: Praha / Krkonoše
Pohlaví: Muž

Re: Programování v Object pascal

Příspěvekod satik » 13 led 2018 13:36

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.
https://www.facebook.com/peasantsandcastles/
https://www.twitch.tv/satikcz/
https://www.youtube.com/c/SatikCZE
PC: Intel Core i7 8700K@5GHz+EK KIT L360, ASUS Maximus X HERO, 32GB RAM@3466, MSI GTX 1080Ti Gaming, Fractal Define S, Seasonic P860, SSD 2TB celkem
Periferie: 3x AOC AG271QG (1440p 165Hz IPS), Razer Deathadder+Blackadder Chroma, Steelseries QcK+, Sennheiser PC360, DXRACER OH/KF06/NB


  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • PASCAL:Podprogramy
    od Potr » 22 dub 2018 00:48 » v Programování a tvorba webu
    2
    437
    od faraon
    22 dub 2018 11:29
  • pascal pomoc zaseknutí v cyklu while
    od Akrej » 13 led 2018 23:01 » v Programování a tvorba webu
    4
    600
    od satik
    27 úno 2018 14:03
  • Programování - C#
    od Lukkys4 » 29 zář 2017 17:11 » v Programování a tvorba webu
    2
    399
    od Lukkys4
    29 zář 2017 17:29
  • Tréning programovaní
    V tomto tématu je hlasování. od Mouse_cz » 30 říj 2017 16:49 » v Programování a tvorba webu
    9
    681
    od faraon
    07 lis 2017 00:39
  • Programování - Screenshot + autoemail.
    od ztr00 » 06 bře 2018 07:29 » v Programování a tvorba webu
    8
    509
    od Microsheep
    07 bře 2018 15:53

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

Kdo je online

Uživatelé prohlížející si toto fórum: CommonCrawl [Bot] a 5 hostů