Eof() funkcija

1

Eof() funkcija

offline
  • Pridružio: 20 Jul 2008
  • Poruke: 197

Liberty Basic
Ja odlično razumem engleski, ali posle prevođenja značenja funkcije, ja samu srž ne razumem. Definicija glasi: Ova funkcija se koristi da se odredi da li je kraj datoteke postignut kada se čita iz sekvencijalnih datoteka. Ako je tako, -1 je povraćeno, inače je 0."
Stvarno ne razumem za šta služi. Zna li neko da mi objasni?
P.S. Ima li negde tutorijal LB na srpskom?



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Pridružio: 04 Sep 2003
  • Poruke: 24135
  • Gde živiš: Wien

Koristi se u petlji.

Ne mogu da ti pomognem sa LibertyBasicom, posto ga nikada nisam koristio, ali logika je sledeca:

while eof <> -1 do
...citaj iz datoteke...
end of while loop

Znaci, petlja se vrsi sve dok sekvencijalno citanje ne stigne do kraja fajla.



offline
  • Pridružio: 02 Jul 2008
  • Poruke: 125

kreneš da čitaš datoteku od početka i prelaziš na sledeći slog. kada dodješ na kraj datoteke, pokazivaš eof() postane true. Tada znaš da nema više podataka.

offline
  • Pridružio: 20 Jul 2008
  • Poruke: 197

Ok, ali kakve veze to ima sa funkcijom pretrazivanja? Obratio sam se libertybasic forumu (na engleskom je), i oni su mi pomogli.
Program koji sam sastavio izgleda ovako:


[start] nomainwin WindowHeight = 180 WindowWidth = 150 button #logon, "Add new user", [add], UL, 13, 10 button #logon, "Look for user", [search], UL, 10, 55 button #logon, "Exit", [exit], UL, 45, 100 open "LOG IN" for window as #logon wait close #logon [add] cls prompt "Please enter the username "; uname$ prompt "Please enter the password "; pass$ open "login.txt" for append as #login print #login, uname$ print #login, pass$ close #login wait [search] cls prompt "User to search for? "; uname$  ' you have to tell the computer who to look for open "login.txt" for input as #login [ReadUserNamePassword] Input #login, u$ Input #login, p$ If u$ = uname$ Then Goto [CloseFile] If EOF(#login) = 0 Then Goto [ReadUserNamePassword] [CloseFile] Close #login If u$ = uname$ Then      notice "The password for ";u$;" is ";p$ wait End If If u$ <> uname$ Then      notice "There is no username of ";uname$ End If wait [exit] close #logon end

ti forumashi su mi pomogli oko funkcije trazenja, pa su oni dodali eof,
ali, ne shvatam sta radi ta eof funkcija ovde.
Malo mi nije jasno.

Da li neko zna da mi objasni sve od [search] pa do dole?

offline
  • Piksi  Male
  • Elitni građanin
  • Pridružio: 13 Nov 2003
  • Poruke: 2435

Pretragu vrsis po fajlu login.txt.
Jednostavno, program mora da zna sta da uradi kada dodje do kraja fajla, za to mu sluzi eof() funkcija.

offline
  • Pridružio: 20 Jul 2008
  • Poruke: 197

Da, ali tamo pise:

"open "login.txt" for input as #login [ReadUserNamePassword] Input #login, u$ Input #login, p$ If u$ = uname$ Then Goto [CloseFile] If EOF(#login) = 0 Then Goto [ReadUserNamePassword]"

ODAKLE se sad odjednom pojavljuju u$ i p$, kad ih pre toga nema?
Ne shvatam!

offline
  • Pridružio: 04 Sep 2003
  • Poruke: 24135
  • Gde živiš: Wien

Pazi, treba prvo da shvatis kako funkcionise sekvencijalno citanje.
Kod sekvencijalnog citanja se cita podatak po podatak.
Program/kompjler ne zna o kakvim se podacima radi i kako su zapisani, tako da ti moras da definises na koji nacin da ih cita (kao stringove, integere itd)

open "login.txt" for input as #login

Ovo znaci, otvori fajl login.txt za citanje, i od sada pa nadalje se tom fajlu obracamo kao promenjivoj #login.

Onda ide Input #login, u$
To znaci - procitaj jedan podatak iz #login fajla (nas login.txt) i taj podatak smesti u promenjivu u$
Input #login, p$ - procitaj drugi podatak iz fajla i smesti ga u promenjivu p$.
Onda u sledecoj liniji proverava da li je prvi podatak onaj podatak koji je bio potreban.

U sledecoj liniji If EOF(#login) = 0 Then Goto [ReadUserNamePassword]" kaze "ako EOF fajla #login = 0 (ako jos nismo stigli na kraj fajla) onda se ponovo vrati na pocetak bloka, tj. idi na citanje sledeceg podatka iz fajla"

Dopuna: 28 Sep 2008 21:13

Zaboravih da kazem nesto.

Kod sekvencijalnog citanja postoji brojac koji zna kojem podatku si zadnji put pristupio, tako da kada uradis sledeci Inpu #login... on ce obavezno procitati sledeci podatak iz fajla (brojac se uvecava).
Da bi mogao recimo ponovo da procitas prvi podatak iz fajla ti moras da resetujes citanje.

offline
  • Pridružio: 20 Jul 2008
  • Poruke: 197

"Pazi, treba prvo da shvatis kako funkcionise sekvencijalno citanje.
Kod sekvencijalnog citanja se cita podatak po podatak.
Program/kompjler ne zna o kakvim se podacima radi i kako su zapisani, tako da ti moras da definises na koji nacin da ih cita (kao stringove, integere itd)

open "login.txt" for input as #login

Ovo znaci, otvori fajl login.txt za citanje, i od sada pa nadalje se tom fajlu obracamo kao promenjivoj #login." - ZA OVO SAM ZNAO.




Onda ide Input #login, u$
To znaci - procitaj jedan podatak iz #login fajla (nas login.txt) i taj podatak smesti u promenjivu u$
Input #login, p$ - procitaj drugi podatak iz fajla i smesti ga u promenjivu p$.
Onda u sledecoj liniji proverava da li je prvi podatak onaj podatak koji je bio potreban.

U sledecoj liniji If EOF(#login) = 0 Then Goto [ReadUserNamePassword]" kaze "ako EOF fajla #login = 0 (ako jos nismo stigli na kraj fajla) onda se ponovo vrati na pocetak bloka, tj. idi na citanje sledeceg podatka iz fajla"

----------- Dopuna: 28 Sep 2008 21:13 ---------

Zaboravih da kazem nesto.

Kod sekvencijalnog citanja postoji brojac koji zna kojem podatku si zadnji put pristupio, tako da kada uradis sledeci Inpu #login... on ce obavezno procitati sledeci podatak iz fajla (brojac se uvecava).
Da bi mogao recimo ponovo da procitas prvi podatak iz fajla ti moras da resetujes citanje. - ZA OVAJ DEO NISAM ZNAO.

Admine, CAR si.
Hvala punoooooo!!!

offline
  • Pridružio: 04 Sep 2003
  • Poruke: 24135
  • Gde živiš: Wien

Ima jos toga...
Fajl ce biti zauzet od strane tvog programa sve dok ga ne zatvoris.
Ne znam naredbu u LibertyBasicu, ali bi trebalo da bude nesto tipa close #login
Ukoliko pokusas Open istog fajla dva puta za redom, a nisi uradio close posle prvog otvaranja - drugi Open ce da izbaci gresku.
Kada uradis Close, brojac za sekvencijalno citanje se resetuje.
Potrazi help fajl, mora da ima i neku naredbu tipa Seek() kojom bi mogao da pomeris brojac na koju hoces poziciju u fajlu.

offline
  • Pridružio: 20 Jul 2008
  • Poruke: 197

Hvala za funkciju seek.
Znam da sve sto se otvori, mora da se zatvori, inace, program izbacuje gresku.
Ja sam vecinu naucio iz helpa, ali ponekad je tesko razumeti sve. (nije sve u prevodu, ima nesto u adaptaciji).
Tutorial je slabo opremljen, cisto ono najosnovnije.
Da li ima neki prosireni tutorial (na srpskom, ako nema moze i engleski)?

Ko je trenutno na forumu
 

Ukupno su 1002 korisnika na forumu :: 42 registrovanih, 8 sakrivenih i 952 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: 357magnum, ajo baba, Apok, arsa, Brana01, celik, CikaKURE, dankisha, Dimitrije Paunovic, DPera, drimer, havoc995, ivan1973, ivica976, janbo, Još malo pa deda, Karla, kolle.the.kid, ljuba, mercedesamg, mikrimaus, milenko crazy north, Milometer, Milos ZA, moldway, mrvica78, Nikolaa11, PAGZLY, royst33, sap, ser.hill, slonic_tonic, Srle993, Stanlio, Stoilkovic, Trpe Grozni, tubular, VJ, VP6919, vukovi, zillbg, zixmix