Tema sukurta: 2012.04.24 17:24
2012.04.24 17:24 Nauja žinutė
Vartotoajs neprisijungęs Peržiūrėti anketą


xlakis12345
xlakis12345
Naujokas
Kaip nuskaityti faila, kuris yra labai ilgas? nes sitas nuskaito tik pati gala

Program skaitymas;
Procedure Skaitytifaila;
var F:text;
S:string;
begin
Assign(f,'C:\Documents and Settings\Ramunas\My Documents\FPS\zodziai.txt');
Reset(f);
While not eof(F) do begin
Readln(F,s);
WriteLn(s);
end;
Close(f);
end;
begin
Skaitytifaila;
Readln;
end.
Cituoti
Atsakyti
Registruokis ir diskutuok!
2012.04.24 19:50 Nauja žinutė
Vartotoajs neprisijungęs Peržiūrėti anketą


Digitus
Digitus
Moderatorius
1) prie ko čia FPS?

2) pagal programos kodą, visą failą ir nuskaito. Kuom remiasi išvados, kad nuskaito tik pabaigą?
Cituoti
Atsakyti
Registruokis ir diskutuok!
2012.04.25 17:06 Nauja žinutė
Vartotoajs neprisijungęs Peržiūrėti anketą


xlakis12345
xlakis12345
Naujokas
Nezinau ar gerai tave supratau. 1) naudodamasis FPS noriu nuskaityti faila. 2) paleidus programa(kuri yra virsui parasyta) nuskaito (jei gerai suprantu) paskutinius 255 simbolius(zodzius), o zinau kad nevisa nuskaito nes atsidares faila pwz notepadu matau kad yra tik nedidele dalis nuskaityta, o kita netelpa todel ir visos nenuskaito.Taigi man reikia kad virsuje esancios programos kintamieji(greiciausiai) butu neribojamo dydzio,atminties ar talpos, Kazkas panasaus kaip buna su string tipu is kurio pasidaro ansistring.
Cituoti
Atsakyti
Registruokis ir diskutuok!
2012.04.25 19:57 Nauja žinutė
Vartotoajs neprisijungęs Peržiūrėti anketą


Digitus
Digitus
Moderatorius
Ai tai FPS paskalio trumpinys pasirodo

O dėl nuskaitymo - nuskaityti turi viską. Tiktai neaišku ką tu ten atidarinėji ir kur žiūri, nes nuskaito tai į RAM, o programos tekste nieko daugiau neparašyta ką su tuo nuskaitytu tekstu daryti, paprastas writeln tiesiog išveda į ekraną vykdymo metu tą eilutę, bet ne į failą.

Jeigu nori konkrečiai matyti ką ten nuskaito, reikia papildyti programos tekstą:

.....
.....
Assign(f,'C:\Documents and Settings\Ramunas\My Documents\FPS\zodziai.txt');
Reset(f);
Assign(R,'C:\Documents and Settings\Ramunas\My Documents\FPS\rezult.txt');
Rwrite(R);
.....
.....
While not eof(F) do begin
Readln(F,s);
WriteLn(R,s);
end;



Tada atsidarysi failą "rezult" ir matysi ką ten rašo
Cituoti
Atsakyti
Registruokis ir diskutuok!
2012.04.25 21:45 Nauja žinutė
Vartotoajs neprisijungęs Peržiūrėti anketą


xlakis12345
xlakis12345
Naujokas
Program skaitymas;
Procedure Skaitytifaila;
var F:text;
S,R:string;
begin
Assign(f,'C:\Documents and Settings\Ramunas\My Documents\FPS\zodziai.txt');
Reset(f);
Assign(R,'C:\Documents and Settings\Ramunas\My Documents\FPS\rezult.txt');
Rwrite(R);
While not eof(F) do begin
Readln(F,s);
WriteLn(R,s);
end;
Close(f);
end;
begin
Skaitytifaila;
Readln;
end.

Sitaip? nes dabar ismeta error "netinkamas 2 tipas(yra constant string, turetu but char)"
Cituoti
Atsakyti
Registruokis ir diskutuok!
2012.04.25 22:55 Nauja žinutė
Vartotoajs neprisijungęs Peržiūrėti anketą


Digitus
Digitus
Moderatorius
Ne R yra kintamasis tekstiniam failui. F duomenų failas, R rezultatų;

Readln(F,s); // iš failo F nuskaito eilutę į kintamajį s
WriteLn(R,s); // Faile R įrašo naują eilutę, kurioje atsiduria kintamojo s turinys/reikšmė


Program skaitymas;
Procedure Skaitytifaila;
var F,R:text;
S :string;
begin
Assign(f,'C:\Documents and Settings\Ramunas\My Documents\FPS\zodziai.txt');
Reset(f);
Assign(R,'C:\Documents and Settings\Ramunas\My Documents\FPS\rezult.txt');
Rewrite(R);
While not eof(F) do begin
Readln(F,s);
WriteLn(R,s);
end;
Close(f);
end;
begin
Skaitytifaila;
Readln;
end.
Cituoti
Atsakyti
Registruokis ir diskutuok!
2012.04.26 15:20 Nauja žinutė
Vartotoajs neprisijungęs Peržiūrėti anketą


xlakis12345
xlakis12345
Naujokas
Kai paleidziu sita programa tai man sukuria toki pati faila "rezult" o i fps langa nieko neisraso, tiesiog tuscia palieka
Cituoti
Atsakyti
Registruokis ir diskutuok!
2012.04.26 16:21 Nauja žinutė
Vartotoajs neprisijungęs Peržiūrėti anketą


Digitus
Digitus
Moderatorius
taip, nes tada rašo į failą. O prieš tai išvesdavo duomenis ekrane. Kadangi seniau viską spausdino ekrane, tai logiška, kad matydavai tik pačią pabaigą, nes programa dirba savo darbą greitai ir spėji pamatyti tik rezultatą.

Kadangi į result failą atspausdina viską tą patį - tai vadinasi viską ir nuskaito.
Jei nori matyti detaliau ką daro - dėk pauzes (su readln) kiekvienos eilutės pabaigoje pvz, tada matysi konkrečiai kaip dirba. Jeigu programos pabaigoje bebūtų readln komandos - iš viso nieko nepamatytum, tiks mirkteltų juodas ekranas ir viskas (bent jau iš kompiliuoto failo taip, gal FPS kiek kitokia aplinka, ten gal vykdymo langas visada pakeltas)

Anyway čia yra sintaksė ir elementarūs pradiniai dalykai - jei nori suprasti, mokykis, pasiskaityk vadovėlyje/knygoje bent kažkiek.
Cituoti
Atsakyti
Registruokis ir diskutuok!
2012.04.26 16:23 Nauja žinutė
Vartotoajs neprisijungęs Peržiūrėti anketą


GnI
GnI
Patyręs
xlakis12345 rašė:

Kai paleidziu sita programa tai man sukuria toki pati faila "rezult" o i fps langa nieko neisraso, tiesiog tuscia palieka


Tą šita programa ir daryt turėjo.

Jei sukuria tokį patį failą. Išvada - jį nuskaito visą.

Šiuo atveju tavo pirminės problemos priežastimi laikyčiau tą, jog teksto konsolėje kiekis nėra neribotas - jei bandoma įrašyti tekstą nebetelpantį į konsolės ribas, tai pirmi įrašai išmetami.
Cituoti
Atsakyti
Registruokis ir diskutuok!
2012.04.26 19:39 Nauja žinutė
Vartotoajs neprisijungęs Peržiūrėti anketą


xlakis12345
xlakis12345
Naujokas
o tai neimanoma padaryt kaip nors kad rodytu visa faila? o jei ne tai gal eina padaryt kad nuskaicius ribota kieki duomenu programa sustotu ir lauktu tarkim kokio mygtuko paspaudimo ir rodytu sekancius irasu ir taip toliau?
Cituoti
Atsakyti
Registruokis ir diskutuok!
2012.04.26 20:13 Nauja žinutė
Vartotoajs neprisijungęs Peržiūrėti anketą


Digitus
Digitus
Moderatorius
o tai neimanoma padaryt kaip nors kad rodytu visa faila?


Tu pats supranti ko tu nori? Programa rodo kintamųjų reikšmes, kuriuos nurodai išvesti į vykdymo langą. Failas guli nepriklausomai ir jį gali pasižiūrėti pvz. su notepad'u.

tai gal eina padaryt kad nuskaicius ribota kieki duomenu programa sustotu ir lauktu tarkim kokio mygtuko paspaudimo ir rodytu sekancius irasu ir taip toliau?


Tai papldai ciklo kodą, kad kas kažkiek eilučių lauktų mygtuko paspaudimo (su readln) kaip jau ir buvo parašyta anksčiau. Pvz uždedi papildomą ciklą, kad išvestų 10 eilučių ir tada readln, tai ir vykdys taip, kad matysi 10 eilučių ir kai paspausi mygtuką klaviatūroje, tada sekančias 10 ir t.t.
Cituoti
Atsakyti
Registruokis ir diskutuok!
2012.04.26 20:23 Nauja žinutė
Vartotoajs neprisijungęs Peržiūrėti anketą


xlakis12345
xlakis12345
Naujokas
Nu aciu bandysiu ka nors padaryt
Cituoti
Atsakyti
Registruokis ir diskutuok!
© 2006 – 2024 Forumas "Draugas.lt"  |  Privatumo politika  |  Naudojimosi taisyklės  |  Reklama  |  Kontaktai