Kezdőoldal » Számítástechnika » Programozás » Hogyan tudok típusos állományb...

Hogyan tudok típusos állományba írni, úgy hogy ne törölje az előző adatot?

Figyelt kérdés
Hello! Szeretnék készíteni egy programot ami bekéri a napi hőmérsékletet majd azt elmenti egy állományba (aztán ha úgy dönt a felhasználó, hogy kell neki napok átlaga vagy a min. , max. hőmérséklet kiírja-de ez mellekes ezeket tudom), de ha újraindítom a programot és új értéket adok meg teljesen felülírja az állományom és elveszik az előző érték... Hogyan lehetne csak hozzáírni az értéket a régebbiekhez? Szöveges állománynál lehet - append, de abba nem tudok változót írni így típusos állományt használok. Ha tudtok légyszi segítsetek!

2013. okt. 31. 09:57
 1/5 A kérdező kommentje:
És Pascal nyelven gondoltam.
2013. okt. 31. 10:00
 2/5 coopper ***** válasza:

Szia.


Rewrite (f) helyett használj Reset (f)-t.


Eldönteni, hogy a fájl létezik-e vagy nem pedig az ioresult függvény segitségével tudod.


Turbó pascal help Ioresult minta program (itt is tipusos fájlról van szó, csak a tipus az byte) :


Sample Code :


{IOResult.PAS}


{Sample code for the IOResult function.}


{ For Windows: }

{ uses WinCrt; }


var F: file of Byte;

begin

{ Get file name command line }

Assign(F, ParamStr(1));

{$I-}

Reset(F);

{$I+}

if IOResult = 0 then

Writeln('File size in bytes: ', FileSize(F))

else

Writeln('File not found');

end.



Sok sikert.

Üdv.

2013. okt. 31. 10:26
Hasznos számodra ez a válasz?
 3/5 A kérdező kommentje:

Szia köszi a gyors választ! Ha a rewrite helyett reset-l nyitom meg a filet akkor is teljesen felülírja a file-m tartalmát és mindig csak az az egy adat lesz benne amit éppen megadok a programban. Pár napja ezen gondolkodom hogyan lehetne ezt megoldani. Próbáltam úgy is,hogy a filesize megadja fileban az adatok számának a végét és seek-l odaállítom a pozíciót a fileba írás előtt, így meg maradttak a beírt számok több futtatásra, de mind kinullázódott csak az utolsó nem amit éppen megadtam.

Tömbökkel is próbálkoztam, sőt a beolvasás tömbe olvas be.

2013. okt. 31. 10:37
 4/5 coopper ***** válasza:

Szia.


Akkor az a baj, hogy mindig az első rekordhelyre irsz (vagy 0. rekord).


Megnyitott filen belüli a pozicionálás : seek


Filében lévő rekordszám lekérdéezése (utolsó rekord megállapitása végett) : filesize


Tipusos álományoknál is ugyanolyan jól müködnek.


Seek minta program :


Sample Code:


{FilePos.PAS}


{Sample code for the FilePos and FileSize functions, and the Seek

procedure.}


{ For Windows: }

{ uses WinCrt; }


var

f: file of Byte;

size : Longint;

begin

{ Get file name from command line }

Assign(f, ParamStr(1));

Reset(f);

size := FileSize(f);

Writeln('File size in bytes: ',size);

Writeln('Seeking halfway into file...');

Seek(f,size div 2);

Writeln('Position is now ',FilePos(f));

Close(f);

end.



Sok sikert.

Üdv.

2013. okt. 31. 10:57
Hasznos számodra ez a válasz?
 5/5 A kérdező kommentje:
Nagyon szépen köszönöm már megy! :D az volt a hiba, hogy amikor én próbáltam a seek-l akkor rewrite-l nyitottam meg a filet és ezért nullázodott. de reset/filesize/seek comboval megy.
2013. okt. 31. 11:07

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!