Bosna i Hercegovina



zxz Offline
Administrator
Registrovan/a od: 03.02.2009-16:22
Komentari: 9,365


Subject: Re: VB6 open binary file
Hehe nije to zbog toga.
Ti zapisujes duzinu stringa i nema to veze ni sa cim.
Moj fajl je veci jer sam ja stavio stringove radi nekih drugih razloga.
String je duzi zapis od broja a u prvom slucaju sam odredio duzine stringova unaprijed pa i to zauzima prostor.
Rekao si da imas samo 50 pa se nisam oko togabaktao jer to je veoma malo podataka pa je bitnija struktura podataka.
Druga stvar je da imas desetke hiljada.

evo ti moj kod ako hoceas malu bazu:
DownloadIzvorni kod (HTML):
  1. Type osoba
  2.     maticniBr As Long
  3.     ime As String
  4.     prezime As String
  5.     datumR As Date
  6.     adresa As String
  7.     telefon As Double
  8. End Type
  9.  
  10. Function saveBinFile()
  11.     Dim O As osoba
  12.     Dim maticni As Long 'vrijednost kucice
  13.     Dim strSize As Long
  14.  
  15.      Open "c:\popis.bin" For Binary Lock Read Write As 1
  16.     For f = 1 To 50
  17.         Worksheets("list1").Select
  18.         maticni = Cells(f + 1, 1)
  19.         O.maticniBr = maticni
  20.         O.ime = Cells(f + 1, 2)
  21.         O.prezime = Cells(f + 1, 3)
  22.         O.datumR = Cells(f + 1, 4)
  23.         Worksheets("list2").Select
  24.         O.adresa = Application.WorksheetFunction.VLookup(maticni, Range("A2:e51"), 4, False)
  25.         O.telefon = Str(Application.WorksheetFunction.VLookup(maticni, Range("A2:e51"), 5, False))
  26.          Put 1, , O
  27.     Next f 'sljedeci red
  28.     Close 1 'zatvorimo datoteku
  29. End Function
  30.  
  31. Function UcitajRed(KojiRed As Integer)
  32.   Dim RedP As osoba 'red podataka za ososubu
  33.   Dim t As osoba
  34.   Dim temp
  35.   Dim I As Integer
  36.  
  37.   Open "c:\popis.bin" For Binary As #1
  38.   For I = 1 To KojiRed
  39.     Get #1, , RedP
  40.   Next I
  41.  temp = Trim(RedP.ime) & " " & Trim(RedP.prezime) & vbCr & "Rodjen: " & Trim(RedP.datumR) _
  42. & vbCr & "Adresa:" & Trim(RedP.adresa) _
  43. & vbCr & "Matcini br:" & Trim(RedP.maticniBr) & vbCr & "Tel:" & Trim(RedP.telefon)
  44.  Close #1
  45.  MsgBox temp
  46. End Function

Eto sad manje nego tvoje.
Tacno onoliko koliko uzimaju brojevi.
Drugo sto iz tvoje nemozes nista ucitati.
Unaprijed odredivanje reda podataka ide sa len naredbob i to za sve redove.
Pozdrav
↑  ↓

zxz Offline
Administrator
Registrovan/a od: 03.02.2009-16:22
Komentari: 9,365


Subject: Re: VB6 open binary file
immediate:
Kada si u vb modulu u meniju imas:
View--->immediate window ili jednostavno ctrl+G i dole na dnu ispod prozora modula pojavit ce se immediate prozor.
U njemu kucas kako sam naveo da bi ucitao podatke iz baze i to po odredjenom redu.
Ukucas koji red hoce i to je to.

Nekada prije se vecinu malih baza radilo kao tekstualne dok nije dosla dbf baza.
U paskalu kobolu itd..
Kada oces napraviti neku tekstulnu batu onda si prvo trebao napraviti strukturu baze.
Puno je to posla kada sad imamo mdb dbf i tps i jos njih.

Samo citaj knjige ima tamo svasta.
Imas i na forumu knjiga u pdf formatu.
Samo nemoj da pretjeras pa da ti se ogadi.
Ja licno misliim da ti znas mnogo vise nego sto zelis da pokazes.
Pozdrav
↑  ↓

Avko Offline
Super Moderator
Registrovan/a od: 28.05.2014-09:21
Komentari: 2,443


Subject: Re: VB6 open binary file
eeee da ja znam onda nebi sada bio ovdje i zahebavo tebe. evo recimo ovu TRIM naredbu ja sam koristio ovako:
prvo Ltrim, pa onda na isti string primjenim rTrim, a sada sam otkrio da sa TRIM micem razmak odma i sa lijeve i sa desne strane. Ono sto znam to je kad vidim listing onda otprilike znam moze li mi to pomoc i prepisem ga pa prepravljam. odredim stop tocke u programu pa sa F8 idem od tocke do tocke i gledam sto se napravi i znam kada sa kursorom misa dodem do neke varijable ispise mi njenu vrijednost pa tako malo pomalo gradim program. uglavnom kada zapnem unesem pojam u google i onda otvaram stranice pa gledam kodove i proucavam. za ovaj forum sam se odlucio jer je na domacem jeziku , malo je nasih foruma gdje su ljudi spremni pomoci a na stranim uglavnom moram prevoditi odgovore. tako da sam ovaj forum stavio u favorite. trenutno citam knjigu od muraje visual basic 3, dobar je za pocetnike i za osnove, a skinuo sam i neke knjige u pdf vb6 za pocetnike sa tutorijala na domacem. jbg knjiga je knjiga, listam ju na wc jer nemam tablet da mogu poneti pdf format.
idem ja sada proucavati tvoj kod. onaj temp me zanima da vidim sta on radi i kako to izgleda kada pokrenemo program.
zadnji put sam maknuo function i prilagodio bez nje sada cu probati sa njima. znaci u imediate prozoru pozovem funkciju. ockej idem se sada igrati pa se javim
Newton laže! Lake padaju brže!
↑  ↓

zxz Offline
Administrator
Registrovan/a od: 03.02.2009-16:22
Komentari: 9,365


Subject: Re: VB6 open binary file
Dim temp
temp je obicna varijabla.
Trebalo je dimenzionisati kao:
dim temp as string, bolje je ali eto ja na brzinu nisam to ni vidio poslije.
Znaci u njoj skupljam sve podatke iz jednog reda te ih prikazuje u MsgBox.

Kao sto sam i naveo znas dosta vise nego sto hoces pokazati hehe.
Kad zapne pitaj.
Pozdrav
↑  ↓

Avko Offline
Super Moderator
Registrovan/a od: 28.05.2014-09:21
Komentari: 2,443


Subject: Re: VB6 open binary file
evo zapelo, znaci malo sam istrazivao ali nisam nasao. prvo sam probao sa EOF naredbom i upisao ovo:

Open ImeFajla For Binary Lock Read Write As #BrFajla
Do Until EOF(1)
Get #BrFajla, , RedP
zadnjiRed = zadnjiRed + 1
Loop
Close #BrFajla

htio sam otici na zadnji zapis u bazi i prikazati ga u onim kucicama ali mi je otislo na zadnji prazni podatak u ovom slucaju red 52, a meni treba red 51
ova varijabla zadnjiRed sam koristio da mi pokaze koji je red i nema u programu nikakvu ulogu.
onda sam surfao i naisao na SEEK vidim da ju isto koriste ali sam odustao jer je prekomplicirano
mozda bi mogao to rijesiti ovako

Open ImeFajla For Binary Lock Read Write As #BrFajla
Do Until EOF(1)
Get #BrFajla, , RedP
zadnjiRed = zadnjiRed + 1
Loop
for f=1 to zadnjiRed-1
Get #BrFajla, , RedP
next f
Close #BrFajla

ali mi izgleda idiotski dva puta se vrtiti po cijeloj bazi
Newton laže! Lake padaju brže!
↑  ↓

zxz Offline
Administrator
Registrovan/a od: 03.02.2009-16:22
Komentari: 9,365


Subject: Re: VB6 open binary file
Seek nje teska za razumjet a mislim da ima objasnjeno i na ovom forumu.
Imas redove-rekorde.
E sad kad dodjes na odedjeni rekor sa seek se mozes pozicionirati na odredjeni karakter tog reda.
seek 1,5
Broj otvorenog fajla 1 a broj pozicije u redu je 5.
sa sik mozes i iscitati na kojoj poziciji se nalazis
Get #BrFajla, , RedP- iscitavanje odedjenog reda

Get #Brfajla,Brojrekorda,Memorijska
E vidis ovako moze ako imas strukturu.
Ono sto sam ti prvi puta napravio pa kazes da je moj fajl veci od tvog.
Ovako moras brojati kao sto sam ja napravio proceduru samo je ti nisi probao.

Function UcitajRed(KojiRed As Integer) ' Kada je pozivas unosis i broj reda ili rekorda koji hoces ucitati
Dim RedP As binar 'red podataka za ososubu
Dim t As osoba
Dim temp
Dim I As Integer

Open "c:\popis.bin" For Binary As #1' Otvara fajl
For I = 1 To KojiRed' Petlja koja broji do reda koji si unijo odnosno rekorda
Get #1, , RedP ' znaci get ces pozvati onliko puta koliki si broj unio u mem kojired i svaki put se pomices u novi red kada ucitas. e sad ovdje ako neces cio red ucitati vrredilo bi i ti seek
Next I
temp = Trim(RedP.ime) & " " & Trim(RedP.prezime) & vbCr & "Rodjen: " & Trim(RedP.datumR) _
& vbCr & "Adresa:" & Trim(RedP.adresa) _
& vbCr & "Matcini br:" & Trim(RedP.maticniBr) & vbCr & "Tel:" & Trim(RedP.telefon)
Close #1
MsgBox temp
End Function
Pozdrav
↑  ↓

zxz Offline
Administrator
Registrovan/a od: 03.02.2009-16:22
Komentari: 9,365


Subject: Re: VB6 open binary file
http://www.icentar.ba/...&id=18721

mozda je bolje da procitas cijelu temu.
Pozdrav
↑  ↓

Avko Offline
Super Moderator
Registrovan/a od: 28.05.2014-09:21
Komentari: 2,443


Subject: Re: VB6 open binary file
evo krv pisam od 12.2 pa do danas
-procito sve korisne kodove na forumu
-trazio po knjigama, tamo nema bas primjera vezanih za binarni fajl
-kaze mi da opsirno pogledam u microsoft visual basic 6 language reference, e tu knjigu nemam i nemoze se ni na ebuy kupiti
ono sto radi:
skok na prvu osobu, prvi zapis
skok na zadnju osobu , zadnji zapis
+1 i -1 napred nazad, to isto radi
al nece mi dodavanje nove osobe

Prilozi:
Informacije o fajlu: zip  vb6 binarni_fajl.zip
Preuzimanja: 58
Veličina: 19.08 KB


Newton laže! Lake padaju brže!
↑  ↓

zxz Offline
Administrator
Registrovan/a od: 03.02.2009-16:22
Komentari: 9,365


Subject: Re: VB6 open binary file
Napravio si more gresaka.
Nisi me htio slusati u pocetku nego si htio sto manji fajl po svaku cijenu.
Upisao si i maticni kao long a hoces 13 cifra da pises along moze samo 10.
Gledaj tekstualni fajl nezna jeli broj ili tatum ili bilo sta drugo.
Tp napravis strukturu pa pri uctavanju preformatiras ako ti trebaju brojevi.
U tvom slucaju i netrebaju jer ne vrsis matematicke operacije.

Evo ti tvoj primjer zavrsen sa brisanjem i upisom.
Nije ti to nista valjalo ni upis ni izmjena jer nemas duzinu reda pa je to malo teze napraviti.
Da si uzeo onaj moj prvi kod puno bi bolje prosao.
Evo ti sada izucavaj.

Prilozi:
Informacije o fajlu: zip  binzxz.zip
Preuzimanja: 20
Veličina: 29.17 KB


Pozdrav
↑  ↓

Avko Offline
Super Moderator
Registrovan/a od: 28.05.2014-09:21
Komentari: 2,443


Subject: Re: VB6 open binary file
citat zxz: Upisao si i maticni kao long a hoces 13 cifra da pises, a long moze samo 10.

e ovo mi je danas dobro doslo. Ko kec na desetku.

pitanje:
zelim stvoriti binarni zapis sljedecih podataka: voce, povrce, meso
dakle:
type namirnice
voce as string
povrce as string
meso as string
end type

prije nego pozovem funkciju saveBinFajl u varijable voce,povrce i meso stavim podatke,
npr voce="jabuka, kruska, tresnja, visnja, jagoda, banana itd"
zanima me koliko maksimalno smije biti velika varijabla voce, dali smije imati maksimalno 255 znakova?
Newton laže! Lake padaju brže!
↑  ↓

Gjoreski Online
Super Moderator
Registrovan/a od: 02.02.2009-22:24
Komentari: 1,239


Subject: Re: VB6 open binary file
Moze da bode stringot dolg 254 karakteri.
Gledam deka rabotis so pobeke promenlivi koi gi smestuvas vo binaren fajl i mislam deka e vreme da pocnis da koristis nekoja baza za tvoite programi
↑  ↓

Avko Offline
Super Moderator
Registrovan/a od: 28.05.2014-09:21
Komentari: 2,443


Subject: Re: VB6 open binary file
Gjoreski, nisam dobro razumio.
DownloadIzvorni kod (Visual Basic):
  1. type namirnice
  2.      voce as string
  3.      povrce as string
  4.      meso as string
  5. end type

moze li Len(voce)>254?
Newton laže! Lake padaju brže!
↑  ↓

Gjoreski Online
Super Moderator
Registrovan/a od: 02.02.2009-22:24
Komentari: 1,239


Subject: Re: VB6 open binary file
Vo String mozis da smestis poveke od 255 karakteri.
Jas najmnogu vo string imam smesteno 133 693 440 karakteri
↑  ↓

Avko Offline
Super Moderator
Registrovan/a od: 28.05.2014-09:21
Komentari: 2,443


Subject: Re: VB6 open binary file
rgr
m8
thx
BB
Newton laže! Lake padaju brže!
↑  ↓

 Podijeli  Dodaj odgovor Stranice (3): 1, 2, 3


All times are GMT +01:00. Current time: 29.06.2017-11:50.