Miért akad ki a program a "reset (ki) "-nél?
Írtam 1 kisebb játékot.
Működik jól, a végén meg lehet adni nevet, és kiírja 1 fájlba a nevet az elért ponttal együtt.
Aztán fogtam és írtam mellé egy megnüt is, információ, indítás és kilépéssel.
Ha így futtatom le a játékot így már nem jó a kiírás, mert a reset(ki)-nél kifagy.
sima játék: [link]
menüs játék: [link]
A fajl nem létezik, ezért nem tudod resetelni. A "reset(ki)" parancs elé kell egy "rewrite(ki)". Azonban ekkor mindig felülírja a fájlt. A teljes megoldás:
assign(ki,'eredmenyek.txt');
{$i-}
reset(ki);
{$i+}
if IOResult <> 0 then begin
rewrite(ki);
reset(ki);
end;
köszi működik, de azt nem értem, hogy simán miért működött?
tanárom is így tanította, hogy assign és utána amit akarok
append/reset/rewrite és eddig jó is volt, meg a sima játéknál is, de ahogy menüt beraktam nem működött
Freepascal.org-on a reset függvény leírása:
"Open file for reading"-megnyit egy fájlt olvasásra.
Ha csak úgy elinditottad a programot, és nem létezett az "eredmenyek.txt", akkor nem tudott mit resetelni, mivel a fájl nem létezett. Ezért akad ki.
Ha elé betennél egy "rewrite" utasítást (ami létrehozza a fájlt), akkor minden alkalommal újra készítené a fájlt, ezért mindig csak a legutóbbi eredmény lenne benne.
-------
A "{$I-}" kikapcsolja az input/output hiba...valamit. :-) Ezután megpróbálja resetelni a fájlt, ha megy (tehát létezik a fájl) az IOResult értéke 0 lesz vagyis nem hajtja végre az if blokkban lévő utasításokat, megy tovább. Ha nem sikerül (tehát nem létezik a fájl) akkor az IOResult értéke nem nulla lesz, vagyis belép az if-blokkba és itt létrehozza a fájlt, aztán megy tovább.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!