Free pascalban, hogyan lehet úgy beolvasni egy file-t, hogy minden új szót külön lehessen kezelni?
Értem én itt azt, hogy van egy doksim, amiben van egy azonosító, mellette a hozzátartozó információ egy szóban, és így egymás alatt.
Mert próbáltam úgy, hogy létre hozok egy Type-ot és akkor utánna egy Array tömbbe olvasom,hogy pl.:
Program valami;
Uses crt;
Type kell=record;
azonosito:string;
eredmeny:string;
End;
Var teszt:Array[1..500] of kell;
f:text;
Begin
Assign(f,'teszt.txt');
Reset(f);
i:=1
While not eof(f) do
Begin
Read(f,teszt[i].azonosito);
Readln(f.teszt[i].eredmeny);
i:=i+1
End;
close(f);
End.
így csak az azonositoba olvassa be egy sor tartalmát.
@21:11
Igen ez jó viszont csak akkor működik ha a compiler -Mdelphi kapcsolóval fordít. Saját előre elkészített unitot meg nem használhat érettségin.
Bemutatom az én próbálkozásomat. Ha jól értem, akkor voltaképpen a 4. feladatról volna szó, és a "valaszok.txt" tartalmát kéne eltárolni a rekordtömbben. A kérdésben közölt program szintaktikai hibáit csak megemlítem, mint furcsaságot, egy dolgot viszont hiányolok: A fájl első sora egyetlen stringben a helyes válaszok kódját tartalmazza, az tehát külön kezelendő. A másutt szokásos Split nekem is rokonszenvesebb volna, de a Free Pascalban én sem találtam meg beépítve – viszont a szűkebben vett feladat megoldható például a StrUtils unit ExtractWord() funkciójával is; a programom ezt használva rakja a beolvasott sor két felét a megfelelő rekordokba. Annyival még kiegészítettem a kérdés programját, hogy a végén kilistázza a rekordtömb tartalmát, és kiírja a helyes kódsort is.
A kérdezőnek írom, hogy talán szerencsésebb lett volna valamivel pontosabban megjelölni a forrást, mert én ugyan megnyitottam a linken lévő pdf file-t, de úgy gondoltam, tizen oldalt azért nem fogok végig olvasni, hogy rájöjjek, mi is a kérdező gondja.
Emiatt aztán hülyeségeket is irkáltam, segítség gyanánt. Tabaki konkrét iránymutatása vitt csak rá, hogy el is olvassam a feladatot,
ami egyébként üdítően életszerű, kilóg, az amúgy szürke, unalmas érettségi feladatok sorából.
A dolog úgy indul, hogy meg kell nyitni és beolvasni egy text formátumú file-t.
Ezt te kétféleképpen valósíthatod meg. Vagy string-ként tárolod egy két dimenziós tömbben az adatokat, vagy az összetartozó adatrészekhez alkotsz egy rekord tipust, majd ebből a tipusból egy tömböt.
Én az utóbbit tettem.
Az adatok formátuma kötött (adott hosszúságú név-érték páros), ehhez lehet igazítani a tároló (rekord) méretét.
Bár ez esetben ismert, de alapban nem tudhatjuk, hogy hány rekordot tartalmaz egy file, így a rekordokból álló tömb jó ha dinamikus, azaz, pontosan akkora, amekkorára éppen szükség van. Ezt legkönnyebben a setlength függvénnnyel lehet megvalósítani.
setlength(TömbNeve, TombUjMerete).
A "valaszok.txt" file első sorát - a helyes eredményeket - elég külön, egy string tip változóba beolvasni, a többi - soronként egy-egy adatpár - meg mehet a rekord alapú tömbbe. Tekintve, hogy számos adatról van szó, így, azt, hogy a tömb hibátlanul feltöltődött-e, a tömb file-ba írásával tudod ellenőrizni, esetleg azzal, hogy mondjuk minden 30-adik sort kiirod a képernyőre.
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!