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ó?
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.
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.
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);
Ü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.
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.
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!