Kezdőoldal » Számítástechnika » Programozás » Pascalban, hogy lehet megcsiná...

Pascalban, hogy lehet megcsinálni, hogy valamit tárolni szeretnék egy txt fájlban, és ha az a fájl nem látezik, hozza létre, ha pedig létezik, akkor csak bővítse, én így írtam meg, de nem jó?

Figyelt kérdés

Program teszt;

Uses crt;

Var t:text;

begin

assign(t,'ment.txt');

If IORESULT<>0 then rewrite(t)

else append(t);

Writeln(t,'szoveg');

end.

end.


2013. nov. 6. 19:28
 1/5 ejbenjaro ***** válasza:

program szovegajl;


var f: text;


begin

assign(f,'ment.txt');

{$i-}

append(f);

if IOResult<>0 then Rewrite(f);

{$i+}

writeln(f,'Elsosor');

close(f);

end.

2013. nov. 6. 19:50
Hasznos számodra ez a válasz?
 2/5 A kérdező kommentje:

Közben mire írtad, sikerült, de azért köszönöm szépen. Így csináltam:

assign(t,'ment.txt');

{$I-}

reset(t);

If ioresult<>0 then rewrite(t)

else append(t);

{$I+}

Writeln(t,'szoveg');

Close(t);

2013. nov. 6. 20:23
 3/5 coopper ***** válasza:

Üdv.


Csak a miheztartás végett {$I-} direktrivát általában egy műveletre használjuk, ha netalán valahol IO hiba keletkezik akkor ha "el van fedve" a {$I-} direktrivával akkor nagyon nehéz megtalálni, hogy hol történt a hiba (most mem erről a kis prograról beszélek, hanem nagyobb bonyolultab programokról).


Tehát :


{$I-}

reset(t);

{$I+}

If ioresult<>0

then rewrite(t)

else append(t);


Üdv.

2013. nov. 6. 20:36
Hasznos számodra ez a válasz?
 4/5 A kérdező kommentje:
Ja értem, átírom, köszi! Amúgy ez kicsit hosszabb program, de csak ez volt belőle a lényeg, ami nem sikerült. De ha nem kapcsoljuk ki, akkor nem működik?
2013. nov. 6. 21:32
 5/5 coopper ***** válasza:

Szia.


De müködik, csak a Te esetedben is két IO művelet van benne egy {$I-} direktrivában.


Ha hiba történik, akkor hol történt a hiba, sőt a hiba helye teljesen más helyen lesz (a forditó szerint) mint ahol a hibát keresni kell :


Próbáld meg a következőt először a Te módszereddel, majd az én módszeremmel :


Miután a program létrehozta a "ment.txt" fájlt, a következő programinditás előtt, a "ment.txt" fájl attributumait állitsd át csak olvasásra (Read-only).


Aztán futtasd a programot.


Midkét esetben "Error 5 : File acces denided" hibát fogsz kapni.


De mig a Te módszerednél a Writeln(t,'szoveg'); sort tartja hibásnak a forditó (valamilyen szinten igaza van, de akkor adódik a kérdés, hogy miért nyitotta meg a fájlt ?)


Addig az én módszeremnél az else append(t); sort tartja hibásnak a forditó (ami jogos is).


Üdv.

2013. nov. 6. 21:58
Hasznos számodra ez a válasz?

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!