Kezdőoldal » Számítástechnika » Programozás » Delphi szövegfájlkezelésnél...

Delphi szövegfájlkezelésnél hogyan lehet puffert használni? Ha valaki írna egy egyszerű de nagyszerű pár soros progit az jó lenne.

Figyelt kérdés
2010. júl. 17. 04:14
 1/4 ejbenjaro ***** válasza:
Mit értesz szövegfájl kezelés alatt? Megnyitás, olvasás, írás, bezárás? Objetum orientált megközelítés kell, vagy nem? Ha nem az kell, akkor az AssignFile, Reset, Rewrite, Append, CloseFile stb. függvényeknek és eljárásoknak kellene utána nézni, illetve a Read, ReadLn, valamint a Write, Writeln eljárások is jól jönnek majd, mivel ezekkel olvashatsz illetve írhatsz a fálba. A net tele van ilyen tutorialokkal, használd kicsit a keresőt. Többet tanulsz belőle, ha magad oldod meg, mintha valaki ír neked egy példát.
2010. júl. 17. 22:37
Hasznos számodra ez a válasz?
 2/4 A kérdező kommentje:
Utánaolvastam, és íráshoz olvasáshoz kellene. A blockread blockwrite-al próbálkoztam de nem megy. Ez a post már csak végső elkeseredés.
2010. júl. 17. 23:28
 3/4 ejbenjaro ***** válasza:

Hát ha mindenféleképpen a blockread illetve a blockwrite eljárásokkal akarod, akkor valami ilyesmit próbálgass:


kód:

program szovegfdolg;


{$mode DELPHI}


var

{fájlváltozó a két fájlnak}

fbe,fki : file;


{egy tömb ami a puffert képezi, ebbe olvassuk be a fájl tartalmát byte-ként}

buff : array[1..2048] of byte;


{Egyéb változók}

beolv,kiirt,i : word;

ossz : longint;

bonusz : string;


begin

{összerendeli a bemeneti fájlt a fájlváltozóval}

AssignFile(fbe,'szovegfdolg.pas');


{megnyitja olvasásra a bemeneti fájlt}

Reset(fbe,1);


{összerendeli a kimeneti fájlt a fájlváltozóval}

AssignFile(fki,'szfdolg.pas');


{megnyitja írásra a kimeneti fájlt}

Rewrite(fki,1);

ossz:=0;

repeat

{beolvasunk a fájlból a buff tömbbe}

blockread(fbe,buff,sizeof(buff),beolv);

for i:=1 to beolv do

begin

{kiírjuk a buff tömbünk tartalmát a képernyőre}

write(chr(buff[i]));

end;

{kiírjuk a buff tömb tartalmát a kimeneti fájlba}

blockwrite(fki,buff,beolv,kiirt);

inc(ossz,kiirt);

until (beolv=0) or (kiirt<>beolv);

writeln('Átmásolva ',ossz,' byte a szovegfdolg.pas fájlból az szfdolg.pas fájlba');


{Beszúrunk egy sort a kimeneti fájl végére a hecc kedvéért}

bonusz:='{Egy bónusz sor a fájl végére}'+#10#13;

for i:=1 to length(bonusz) do

buff[i]:=ord(bonusz[i]);

beolv:=length(bonusz);

blockwrite(fki,buff,beolv,kiirt);


{bezárjuk a fájlokat és a programunk futása az ENTER lenyomására véget ér}

CloseFile(fbe);

CloseFile(fki);

writeln('A kilépéshez nyomj >>ENTER-t<<');

readln;

end.


Ez Free Pascalban készült nem Delphiben, de ott is lefordítható, ha kiveszed a {$mode DELPHI} fordító direktívát az elejéről azt hiszem. A program egyébként egy szimpla fájlmásolást mutat be annyival kiegészítve, hogy kiirja a képernyőre a puffer tartalmát, tehát amit a blockread-el beolvasott a fájlból, illetve a program végén még egy plussz sort szúr be a másolatba.

Szerintem szövegfájlt egyszerűbb feldolgozni például egy stringlist segítségével, vagy a FileStream-el, de még a sima read/readln, és write/writeln is sokkal egyszerűbb, persze így nem annyira van puffered, ami nem tudom miért lényeges.

2010. júl. 18. 13:31
Hasznos számodra ez a válasz?
 4/4 A kérdező kommentje:
köszi, megnézem majd.
2010. júl. 19. 00:27

Kapcsolódó kérdések:




Minden jog fenntartva © 2025, 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!