[ MACTEPx @ 15.07.2006. 14:31 ] @
posto ne znam tacan broj elementata niza prvo dimenzionisem prazan
Code:
dim niz() as string

pa onda redimenzionisem
Code:
ReDim niz(brojac)

medjutim izgleda se sadrzaj niza ne pamti pa ne mogu da koristim niz.
gde gresim?
[ goranvuc @ 15.07.2006. 16:59 ] @
U ovakvim situacijama koristis ReDim Preserve
[ MACTEPx @ 16.07.2006. 12:02 ] @
opet nece, pogledajte fajl uz poruku pa ce vam biti jasnije: kad se klikne na command button 1 onda se generise velicina niza, ali kada se klikne na command button 2 onda se javlja greska subscript out of range, kao da taj niz uopste ne postoji!
stvarno ne znam gde je greska
[ Nibble @ 16.07.2006. 12:26 ] @
Pa naravno da ne moze kada je niz definisan samo u command1.Pokusaj ovako.
Code:

Dim niz() As Integer

Private Sub Command1_Click()
x = Int(1 + Rnd * 10)
Print x
ReDim Preserve niz(x)
Print LBound(niz)
End Sub

Private Sub Command2_Click()
Print UBound(niz)
End Sub
[ Aleksandar Ružičić @ 16.07.2006. 23:52 ] @
da ne bi dobijao subscript out of range pre nego sto dimenzionises niz (jer kad samo deklarises niz() - on nije dimenzionisan) dobra ideja je (da se ne bakces sa safe nizovima) da pre nego sto upotrebis UBound (ili LBound, svejedno) "resetujes" niz:
Code:

ReDim niz(0)

i onda bi kao prvi clan uvek trebao da uzimas 1 a ne 0.
ovaj kod stavi u npr Form_Load i to bi trebalo da ti resi probleme...

bar ja ovaj nacin uvek koristim....
[ goranvuc @ 17.07.2006. 22:01 ] @
Nemoj da se ljutis, ali skinuo sam taj tvoj projekat i mogu ti reci da vecu koncentraciju zbunjenosti i haosa odavno nisam video.

Kako bi bilo da nam objasnis sta zelis da postignes tim kodom, mi ti napisemo kako to treba skolski, pa onda ti i jos neko ko naleti mozda i nauci nesto? Ja sam uvek raspolozen da pomognem ljudima, pa sto ne bi i tebi?
[ goranvuc @ 17.07.2006. 22:42 ] @
Citat:
krckoorascic: da ne bi dobijao subscript out of range pre nego sto dimenzionises niz (jer kad samo deklarises niz() - on nije dimenzionisan) dobra ideja je (da se ne bakces sa safe nizovima) da pre nego sto upotrebis UBound (ili LBound, svejedno) "resetujes" niz:
Code:

ReDim niz(0)

i onda bi kao prvi clan uvek trebao da uzimas 1 a ne 0.
ovaj kod stavi u npr Form_Load i to bi trebalo da ti resi probleme...

bar ja ovaj nacin uvek koristim....


Evo ti elegantniji nacin za doticnu problematiku
Code:

Private Sub FormirajNiz(ByRef Niz As Variant, ByVal Dimension As Integer)
   Dim intCounter As Integer
   
   Niz = Empty 'Inicijalizacija
   
   For intCounter = 0 To Dimension
      If IsEmpty(Niz) Then 'prvi
         ReDim Niz(0)
         Niz(0) = Int(1 + Rnd * Dimension)
      Else 'ostali
         ReDim Preserve Niz(intCounter)
         Niz(intCounter) = Int(1 + Rnd * Dimension)
      End If
   Next
   
End Sub


U prevodu, prethodna procedura formira niz od prosledjenog broja clanova, sa slucajnim vrednostima od 1 do ukupnog broja clanova niza. Nije bas neki primer koji ima smisla, ali poenta je u resavanju problema na malo drugaciji nacin.
[ Aleksandar Ružičić @ 17.07.2006. 22:56 ] @
jeste ovo elegentnije resenje ali je moje krace :D mada ti predlazem da koristis ovo sto ti je Goran dao

poz svima!
[ MACTEPx @ 18.07.2006. 09:34 ] @
Citat:
Kako bi bilo da nam objasnis sta zelis da postignes tim kodom, mi ti
napisemo kako to treba skolski, pa onda ti i jos neko ko naleti mozda i
nauci nesto?

pa treba mi da je taj niz vidljiv u celoj aplikaciji, a ne samo u jednoj
proceduri, a sluzi za pretragu po zapisima listview-a. mozda postoji bolji
nacin za ovakvu vrstu pretrage (isto kao pretraga u winamp-u u media
library) ?
[ goranvuc @ 18.07.2006. 10:09 ] @
Evo ja vec odavno ne koristim winamp (mada nemam nista protiv njega), pa ako mozes da opises na koji si nacin zamislio tu pretragu, kako se puni listview ... , pa onda idemo dalje. Dakle, probaj da nam "prepricas" sto detaljnije kako si zamislio celu stvar - sigurno ce se jos neko javiti sa nekim pametnim predlozima.
[ Aleksandar Ružičić @ 19.07.2006. 00:32 ] @
da bi ti niz bio vidjliv u celoj aplikaciji deklarisi ga kao public u nekom modulu:
Code:

Public niz() As String


sto se tice pretrage kao u winampu (da ti automatski izbacuje rezultate dok kucas) ja sam to ranije resevao na ovaj nacin (mada nije najefikasniji):
Code:

Private Sub txtSearch_Change()
   Dim i As Long

   Call lstResults.Clear
   
   For i = 1 To UBound(data) ' data mi je bio niz tipa string (deklarisan kao public, u modulu)
      If InStr(1, data(i), txtSearch.Text) > 0 Then
         Call lstResults.Add(data(i))
         DoEvents
      End If
   Next

End Sub

ovo nije najbolje moguce resenje ali moze da ti da neku ideju... (mada ja to sad resavam na slican nacin s tim sto kod za pretragu pishem u c++u i samo eksportujem funkciju za pretragu iz dll-a)