Kezdőoldal » Számítástechnika » Programozás » Pascal fájlkezeléssel van...

Pascal fájlkezeléssel van némi gondom. Számokat szeretnék beírni majd kiolvasni fájlból de nem vagyunk egy hullámhosszon a géppel. Egy egyszerű példával is beérem?

Figyelt kérdés

program szamok;

type

tszam = record

sz : integer;

end;

var

f : file of tszam;

sz: integer;

begin

assign(f,'szamok.dat');

rewrite(f);

write('szam : '); read(sz);

while sz <> '' do

begin

write(f,sz);

end;

close(f);

end.



2014. dec. 19. 21:18
1 2
 1/11 uno20001 ***** válasza:

"var

f : file of tszam;"

Inkább legyen "textfile".

2014. dec. 19. 22:09
Hasznos számodra ez a válasz?
 2/11 SimkoL ***** válasza:

program szamok;

type

tszam = record

sz : integer;

end;

var

f : file of tszam;

sz : tszam;

begin

Assign(f,'f:\szamok.dat');

ReWrite(f);

Write('szam : ');

ReadLn(sz.sz);

Write(f,sz);

Close(f);

end.


Bár az egész baromság :) ebben a formában

2014. dec. 19. 22:35
Hasznos számodra ez a válasz?
 3/11 tabaki ***** válasza:

Először is: Nem értem, hogy mire jó egy puszta egészből rekordot csinálni. Ez még annyira sem értelmes, mint egyetlen utasítást BEGIN és END; közé fogni, lásd a WHILE-ciklusodat.


Másodszor: Ha jól értem, a következőkre kéred a programot:

1. Nyisson meg egy fájlt a „rekordjaid” számára.

2. Írja ki, hogy „szam: ”, és olvasson be egy számot.

3. Mindaddig, amíg a SZÁMOD nem üres STRING (tehát, ha a fordító nem lenne észnél, a végtelenségig), írja be ugyanazt a számot a fájlba.

4. Ha a Jóisten csodát tesz, és mégis letelik a végtelen ciklus, lelkiismeretesen zárja be a fájlt, és álljon le.


El nem tudom képzelni, miből gondoltad, hogy ez a zagyvalék valami hasonlót csinál, mint amit leírtál, még szerencse, hogy a típusütközés miatt le sem fordul.

2014. dec. 19. 23:29
Hasznos számodra ez a válasz?
 4/11 tabaki ***** válasza:

Tőlem is egy próbálkozás -- hibakezelés egyelőre szintén nuku, illenék a fájlműveleteket meg a beolvasott számokat is ellenőrizni. Az adatok bevitelét a -11111 szám beírásával fejezheted be (vagy ha eléred a százas maximumot, magától tovább lép).


program szamok;

var

fajl : file of integer;

szamlalo, szam: integer;

oke: boolean;

begin

Assign(fajl,'szamok.dat'); ReWrite(fajl);

oke := False;

WriteLn('Írd be a számokat:');

repeat

inc(szamlalo); Write(szamlalo, '. szám: '); ReadLn(szam);

if (szam <> -11111) and (szamlalo < 100) then

Write(fajl,szam)

else

oke := True;

until oke;

Close(fajl);

Reset(fajl);

szamlalo:=0;

WriteLn; WriteLn('A fájlba írt számok:');

while not EOF(fajl) do

begin

inc(szamlalo); write(szamlalo, '. szám = '); Read(fajl,szam); WriteLn(szam);

end;

Close(fajl);

end.

2014. dec. 20. 00:29
Hasznos számodra ez a válasz?
 5/11 anonim ***** válasza:

pastebin

.com/WRVhpEeV


Ez a program pontosan azt csinálja, amit szeretnél, azonban hibakeresést nem írtam bele. Figyelned kell az integer túlcsordulásra, i/o hibákra.

2014. dec. 20. 11:14
Hasznos számodra ez a válasz?
 6/11 A kérdező kommentje:

A ciklusból kimaradt egy sor: write('szam : '); read(sz);

A programok valóban azt csinálják amit szeretnék csak továbbra sem értem a lényeget például azt a típusütközést. De sebaj a példák segítségével majdcsak összejön.


Köszönöm a válaszokat mindenkinek.

2014. dec. 22. 19:20
 7/11 tabaki ***** válasza:
Mi nem érthető a típusütközésben? Beolvasol egy számértéket, és össze akarod hasonlítani egy szöveggel, ilyen nincs. Ezért oldottam meg én úgy, hogy a kilépés szintén egy bizonyos számértékhez kapcsolódjon, a pastebines kolléga meg (helyénvalóbban) úgy, hogy a kapott számot előbb szöveggé alakította. Így a program nálam egy számot hasonlít össze egy másik számmal, nála egy szöveget egy másik szöveggel. Vagyis mindkét esetben azonos típusú, összevethető értékeket vizsgál, nem pedig büdös sajtot mér a kettőskönyveléshez.
2014. dec. 22. 20:30
Hasznos számodra ez a válasz?
 8/11 tabaki ***** válasza:
+ Fenébe, fordítva írtam. Tehát a pastebines program SZÖVEGKÉNT OLVASSA BE a számot, ebben az állapotában ellenőrzi, hogy üres stringet kapott-e, és ha nem, csak akkor alakítja ténylegesen számértékké, és írja be a fájlba. De a lényeg ugyanaz: Szöveget hasonlít össze szöveggel.
2014. dec. 23. 02:12
Hasznos számodra ez a válasz?
 9/11 SimkoL ***** válasza:

tabaki kolléga ugye a büdös sajt néhol fedezet a felvett kölcsönre :)

Más: A Val eljárás 'csodákra' képes, bármilyen 'öreg'is.

2014. dec. 23. 11:50
Hasznos számodra ez a válasz?
 10/11 tabaki ***** válasza:

A manóba! Lám, éjjel kettőkor már lankadok, a legnyilvánvalóbb összefüggések is elkerülik a figyelmemet.

Ha nem akartam volna minél egyszerűbb megoldást, én is val()-t használtam volna. Amíg lehet, kerülöm a plusz unitokat, meg aztán nem is való már nekem ez a sok újmódi firlefranc...

2014. dec. 23. 12:20
Hasznos számodra ez a válasz?
1 2

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!