Dobrý den, vytvářím si jednoduchou hru-šibenici. Žádám Vás o radu, slova načítám z textového souboru a samozřejmě potřebuji aby se pokaždé načetlo jiné slovo, nevím jak toho dosáhnout,nebo jak to indexovat,pokaždé mi to napíše chybu. Zkoušel jsem Randomem vygenerovat číslo,dát je do proměné a pomocí ní indexovat ale to mě též nešlo. Prosím poradte
...
AssignFile(f,'C:\...sporty.txt');
reset (f);
while not (eoln(f)) do begin Readln (f,slovo);
end;
Label3.Caption:=vypis;
CloseFile(f);
end;
procedure TForm2.Button3Click(Sender: TObject);
begin
Button3.top:=Button3.top+405;
pismeno:='a';
nasel:=0;
for n:=1 to 8 do
if pismeno=slovo[n] then begin
vypis[n]:=pismeno;
nasel:=1;
end;
...
Dále ještě prosím o radu,jakým příkazem (např.při stisku tlačítka) se dá obnovit formulář,jako aby to bylo jako na začátku při spuštění. Předem děkuji. T
Fórum › Delphi
Sibenice-nacitani ze souboru
Vzhledem k tomu, že slova z toho souboru používáš opakovaně (při další hře), tak si je při startu aplikace načti do pole (pokud znáš počet záznamů) nebo do seznamu. Následně vylosuj náhodné číslo a můžeš přímo přistupovat k hodnotě (pole) nebo tam "doskáčeš" (seznam) :smile1: .
A obnovu formuláře uděláš tak, že všem ovládacím prvkům nastavíš stejné vlastnosti/parametry jako měly při startu.
Zkus to třeba takto:
Načti si ten soubor se sportama (u mne sporty.txt) do Mema1.
Pokud nechceš aby ten soubor byl vidět (v tom Memu1), tak na Memo1 dej Memo1.Visible := False;
(upozorňuji, že nejdříve je nutné načíst soubor sporty.txt-tj.nejdříve kliknout na Button1)
Program
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Memo1: TMemo; //Memo pro načtení souboru sporty.txt
Button1: TButton; //tlačítko pro spuštění načtení souboru sporty.txt
Edit1: TEdit; //zobrazení č.řádku, který to vybralo
Label1: TLabel;
Label2: TLabel;
Edit2: TEdit; //zobrazení vybraného slova
Button2: TButton;//tlačítko pro provedení akce
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Clear;
Memo1.Lines.LoadFromFile('sporty.txt'); //načtení souboru sporty.txt
//musí být ve stejném adresáři jako program
end;
procedure TForm1.Button2Click(Sender: TObject);
var i,n: Integer;
begin
Randomize;
n := Memo1.Lines.Count; //zjištění počtu řádků-sportů
i := Random(n)+1; //vybrání náhodného řádku-jeho čísla
Edit1.Text := IntToStr(i);//výpis č.řádku
Edit2.Text := Memo1.Lines[i-1];//výpis, který to je (jméno sportu)
end;
end.
To MiMi
To tlačítko jsem tam dal pouze proto, aby viděl to načtení souboru.
Samozřejmě, že to jde načíst při FormCreate, aniž by tam muselo být nějaké
tlačítko.
Načtení do Mema (a může být neviditelné) má své výhody v tom, že se nemusíš
při načítání starat o to, kde je konec řádku a souboru. Navíc při změně souboru
se sporty (např.přidá se nový sport) se vůbec nic neděje.
Tvoje řešení s dynamickým polem - stejně to musiš do toho tvého dynamického
pole nějak nacpat.
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Šibenice -> Výpis výsledků a řazení z .dat souboru — založil Jakub Stodůlka
Nacitani souboru v C — založil latis
Nacitani souboru — založil tester
Načítání retezce ze souboru — založil vaseke
Načítání souboru do struktury — založil Hanule