QBasic - WRITE briše jedan drugi

poruka: 8
|
čitano: 4.705
|
moderatori: XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
14 godina
neaktivan
offline
QBasic - WRITE briše jedan drugi

Ovako...

Radim 1 program i imam jedan veliki problem

Ovako izgleda program: (kod)

CLS

INPUT "Vase Ime i Prezime: ", a$

INPUT "Datum: ", b$

INPUT "Vasa adresa: ", c$

INPUT "Broj telefona: ", d$

INPUT "0pis problema: ", e$

OPEN "problem.txt" FOR OUTPUT AS #1

WRITE #1, a$

WRITE #1, b$

WRITE #1, c$

WRITE #1, d$

WRITE #1, e$

PRINT "Vas problem je zapisan u bazu podataka! Hvala na strpljenju!"

CLOSE #1

END

 

I sad to je sve super, program se izvrsi(slika 1 kako izgleda kad se izvrsi), i u ''problem.txt'' (koji se nalazi u C:/qbasic) se ispiše slijedece:

 

"Marko Markic"

"16.12.2011"

"Mozebitna Ulica 12"

"018979797"

"Problem je taj i taj..."

Sve je to OK, tako kako bas i zelim.
Sada dolazi problem: kad opet izvrsim program, onda hocu da mi se ispod ovog Marka Markica pojavi i taj drugi covjek.
Kod mene se dogadja da novo pokretanje programa izbrise sadrzaj koji je vec unutra i stavlja novi, znaci, samo 1 covjek stane u ''problem.txt''
Hocu da ih stane više... da samo piše ispod drugog covjeka...
Ima netko prijedlog sto mu je? Program radim zbog vježbe... Molim odgovor!
Hvala Vam!
PS. Koristim DosBox i Windows 7 Ultimate... 32 bit...

Program se izvrsi Program se izvrsi
 
0 0 hvala 0
14 godina
neaktivan
offline
Re: QBasic - WRITE briše jedan drugi

Ne sjećam se više basica ali probaj ovako;

 

OPEN "problem.txt" FOR APPEND AS #1

http://www.chess.com/livechess/profile/Tracer1808
14 godina
neaktivan
offline
QBasic - WRITE briše jedan drugi

Da...tako radi...

Mozes li mi pojasniti molim Te... zasto APPEND sada?

---

I jos 1 ''problem''

Programski kod:

CLS

INPUT "Vase Ime i Prezime: ", a$

INPUT "Datum: ", b$

INPUT "Vasa adresa: ", c$

INPUT "Broj telefona: ", d$

INPUT "0pis problema: ", e$

OPEN "problem.txt" FOR APPEND AS #1

WRITE #1, a$

WRITE #1, b$

WRITE #1, c$

WRITE #1, d$

WRITE #1, e$

WRITE #1, "---"

PRINT "Vas problem je zapisan u bazu podataka! Hvala na strpljenju!"

CLOSE #1

END

 

Ovaj ''---'' je razdvojnik izmedju 2 korisnika, podatka, kako god, inace izgledaju spojeni

 

Kad upisem 2 korisnika (ili vise), to izgleda ovako:

 

"Marko Markic"

"16.12.2011"

"Mozebitna 12"

"01315315"

"Problem taj i taj..."

"---"

"Narko Narkic"

"17.12.2011"

"Ulica 15"

"01515141"

"Problem ovaj i ovaj..."

"---"

Moze li se kako napraviti da ne stavlja ove navodnike na ''---''

Ako ne moze, nema veze, samo pitam iz znatizelje.

 
0 0 hvala 0
14 godina
neaktivan
offline
Re: QBasic - WRITE briše jedan drugi

Append inače znači - dodaj na kraj datoteke. Pitanje je samo da li datoteka prethodno mora postojati ili ne.


A ovo za navodnike nisam baš shvatio. Ali uopće ti niti ne treba "---" kad znaš strukturu podataka.

http://www.chess.com/livechess/profile/Tracer1808
16 godina
offline
Re: QBasic - WRITE briše jedan drugi
DarkBoss kaže...
Da...tako radi...
Mozes li mi pojasniti molim Te... zasto APPEND sada?
Moze li se kako napraviti da ne stavlja ove navodnike na ''---''
Ako ne moze, nema veze, samo pitam iz znatizelje.
-znaš li engleski? Osnovna razlika između kreiranja novog i korištenja postojećeg filea.
-write automatski dodaje navodnike, zapravo je to kompletno pogrešan način (ali može raditi) jer...
Uvjek razmišlja i o učitavanju, jer samo snimanje podataka inače nema smisla. Recimo dodaj vrijeme-datum kad je poruka primljena. Praktičniji je random, put i get, kontroliraj sve kroz varijable (file handler), uvjek testiraj/predvidi greške itd.
-'separator' nije ni potreban, logičnije je kao što su podatci snjimljeni (programom) jednako tako programom prikazati željene podatke korisniku umjesto da on otvara txt u notepadu, jer što kad je u txtu više slogova, što kad naraste na npr 20GB ili više tisuća zapisa itd.. mada je samo vježba, ipak treba raditi s konkretnim ciljem (za korištenje) upravo zbog vježbe koja je tad korisna. (mada je sam basic stvarno nepotreban, još manje snimanje podataka = baza = npr excel, access itd.)
C64/TurboModul-OpenSourceProject.org.cn.部分作品为网上收集整理,供开源爱好者学习使用
14 godina
neaktivan
offline
QBasic - WRITE briše jedan drugi

ihush hvala na odgovorima

Napravio sam program koji čita moje podatke iz ''problem.txt''

Problem je sto koliko stavim ovih ''a$, b$, c$...'' toliko mi podataka čita(slika 1). Vidjet cete iz koda. Ako izostavim ''j$'' iz koda, nece mi ispisati zadnji podatak (slika 2), obrisem jos jedan, nece zadnja 2 podatka ucitati... problem je sto stalno moram prepravljati citac da bi mi citao normalno -.-

Kod:

 

CLS

PRINT "PROBLEM.BAS - Citac"

PRINT

OPEN "problem.txt" FOR INPUT AS #1

INPUT #1, a$, b$, c$, d$, e$, f$, g$, h$, i$, j$

CLOSE #1

PRINT a$, b$, c$, d$, e$, f$, g$, h$, i$, j$

I da...

''problem.txt'' sad izgleda ovako (ja sam maknuo onaj --- jer ne treba, kao sto i vi kazete)

 

"Marko Markic"

"19.11.1111"

"Mozebitna"

"012121"

"Problem"

"Pero Peric"

"19.11.1021"

"Perograd"

"01213131"

"Problem pero 1"

 

 

slika 1 slika 1
slika 2 slika 2
Poruka je uređivana zadnji put pet 16.12.2011 14:52 (DarkBoss).
 
0 0 hvala 0
16 godina
offline
Re: QBasic - WRITE briše jedan drugi

nije mi qb pri ruci, pa evo jedan link s dovoljno primjera.

 

U primjerima je uvjek samo taj konkretan kod, u radu je open-save samo jedan mali dio nekog porgrama, izdvojen kao rutina.

Kreni od tog, definiraju sub za pisanje i čitanje podataka. Funkciji treba prosljediti varijable, uobičajeno call nešto (a,b,c, ..). Uobičajeno u nekoj petlji, za čitanje svih podataka može do-loop until EOF. (BOF/EOF = Begining/End of file)

-uvjek treba koristiti komplementaran način, tj moraš znati kakav tip podatka zapisuješ, kako ga tumačiti ili konvertirati (npt string u broj), kao i strukturu baze. Korištenjem Random pristupa, možeš čitati ili pisati-prepisati odreženi slog, ili npr tražiti sve prijave od neke osobe, ili po datumu itd. (to je početak relacijskih baza). Recimo, tad za neko usobu, koja je prijavila kvar određenog datuma, napraviš prtetraživanje ime =neko ime, datum =datum, imaš taj unos (slog), u polje koje može biti definirano kao status prijave, napisati u radu, rješeno ili nešto treće. Daleko korisnije nego samo sekvencionalni podatci, samo treba predvidjeti potrebna polja.

 

Pošto si podatke snimao naredbom write, automatski im je dodan navodnik, ako koristiš npr put-get, tad treba imati i odgovarajuće varijable (ili sve tretirati kao string, pa konverziju raditi kod dodjeljivanja varijablama). U ovom primaljeru su svi podatci kao string (datum se lako konvertira ako zatreba), ali u radu su često i ostali tipovi (brojčane vrijednosti, kao cijena, količina..) pošto s tim vrijednostima obično moraš vršiti neke operacije one moraju biti i deklarirane kao broj, npr double.

Za podatke je praktično korištenje type-a, definiraj strukturu podatka. Dimenzioniraš i koristiš za unos, snimanje i sve operacije u programu.

 

Razlog zašto nije pročitao (ili samo ispisao?) posljenje podatke? - nepoznat, zato koristi debuger, step, pause... i testiraj varijable u debugeru da vidiš što se dešava.

- uvjek kod vanjskih operacija moraš imati errorhandler, za početak je dovoljno on error goto labela gdje obaviš testiranje greške i vratiš ili prekineš program, resume 0, resume.. itd..

C64/TurboModul-OpenSourceProject.org.cn.部分作品为网上收集整理,供开源爱好者学习使用
14 godina
neaktivan
offline
Re: QBasic - WRITE briše jedan drugi
ihush kaže...

Razlog zašto nije pročitao (ili samo ispisao?) posljenje podatke? - nepoznat, zato koristi debuger, step, pause... i testiraj varijable u debugeru da vidiš što se dešava.

- uvjek kod vanjskih operacija moraš imati errorhandler, za početak je dovoljno on error goto labela gdje obaviš testiranje greške i vratiš ili prekineš program, resume 0, resume.. itd..

Predpostavljam da je to ovako:

koliko podataka (koliko sam mu writeo-va dao sve zajedno) -> toliko varijabla i toliko ispisivanja

Negdje u samom bejziku taj ''Pero Peric'' on stavlja kao, npr: f$ = "Pero Peric"

A taj ''Pero Peric'', tj varijabla f$ je napravljena kroz WRITE komandu

Uglavnom, probat cu to nekako automatizirati, ili bar da uvijek ispiše samo zadnja 2 podatka.

Hvala na ovom sajtu, pomoci ce mi u daljnjem radu.

Ako imaš kakvu ideju, ili savjet... uvjek sam otvoren za bilo kakva mišljenja! ;)

1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice