Poslao: 28 Sep 2008 11:06
|
offline
- AleX

- Građanin
- 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.
|
|
Poslao: 28 Sep 2008 11:47
|
offline
- bobby

- Administrator
- 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.
|
|
|
|
Poslao: 28 Sep 2008 15:10
|
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.
|
|
|
|
Poslao: 28 Sep 2008 17:41
|
offline
- AleX

- Građanin
- 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?
|
|
|
|
Poslao: 28 Sep 2008 18:40
|
offline
- Piksi

- 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.
|
|
|
|
Poslao: 28 Sep 2008 20:33
|
offline
- AleX

- Građanin
- 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!
|
|
|
|
Poslao: 28 Sep 2008 21:13
|
offline
- bobby

- Administrator
- 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.
|
|
|
|
Poslao: 28 Sep 2008 21:22
|
offline
- AleX

- Građanin
- 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!!!
|
|
|
|
Poslao: 28 Sep 2008 21:40
|
offline
- bobby

- Administrator
- 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.
|
|
|
|
Poslao: 28 Sep 2008 22:01
|
offline
- AleX

- Građanin
- 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)?
|
|
|
|