Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

problem sa ponovnim dimenzionisanjem niza

[es] :: Visual Basic 6 :: problem sa ponovnim dimenzionisanjem niza

[ Pregleda: 2585 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

MACTEPx

Član broj: 47593
Poruke: 341
*.dialup.neobee.net.



+5 Profil

icon problem sa ponovnim dimenzionisanjem niza15.07.2006. u 14:31 - pre 215 meseci
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?
#include <iostream.h>
void main()
{
cout << "Pozdrav...";
}
 
Odgovor na temu

goranvuc
Goran Vucicevic
Novi Sad

Član broj: 4934
Poruke: 1846
*.neobee.net.



+41 Profil

icon Re: problem sa ponovnim dimenzionisanjem niza15.07.2006. u 16:59 - pre 215 meseci
U ovakvim situacijama koristis ReDim Preserve
 
Odgovor na temu

MACTEPx

Član broj: 47593
Poruke: 341
*.dialup.neobee.net.



+5 Profil

icon Re: problem sa ponovnim dimenzionisanjem niza16.07.2006. u 12:02 - pre 215 meseci
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
#include <iostream.h>
void main()
{
cout << "Pozdrav...";
}
Prikačeni fajlovi
 
Odgovor na temu

Nibble

Član broj: 63173
Poruke: 302
*.dlp256.bih.net.ba.



+1 Profil

icon Re: problem sa ponovnim dimenzionisanjem niza16.07.2006. u 12:26 - pre 215 meseci
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
 
Odgovor na temu

Aleksandar Ružičić
Software Architect, Appricot d.o.o.
Beograd

Član broj: 26939
Poruke: 2881

Jabber: krckoorascic@gmail.com
Sajt: krcko.net


+44 Profil

icon Re: problem sa ponovnim dimenzionisanjem niza16.07.2006. u 23:52 - pre 215 meseci
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....
 
Odgovor na temu

goranvuc
Goran Vucicevic
Novi Sad

Član broj: 4934
Poruke: 1846
*.dialup.neobee.net.



+41 Profil

icon Re: problem sa ponovnim dimenzionisanjem niza17.07.2006. u 22:01 - pre 215 meseci
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?
 
Odgovor na temu

goranvuc
Goran Vucicevic
Novi Sad

Član broj: 4934
Poruke: 1846
*.dialup.neobee.net.



+41 Profil

icon Re: problem sa ponovnim dimenzionisanjem niza17.07.2006. u 22:42 - pre 215 meseci
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.
 
Odgovor na temu

Aleksandar Ružičić
Software Architect, Appricot d.o.o.
Beograd

Član broj: 26939
Poruke: 2881

Jabber: krckoorascic@gmail.com
Sajt: krcko.net


+44 Profil

icon Re: problem sa ponovnim dimenzionisanjem niza17.07.2006. u 22:56 - pre 215 meseci
jeste ovo elegentnije resenje ali je moje krace :D mada ti predlazem da koristis ovo sto ti je Goran dao

poz svima!
 
Odgovor na temu

MACTEPx

Član broj: 47593
Poruke: 341
*.com
Via: [es] mailing liste



+5 Profil

icon Re: problem sa ponovnim dimenzionisanjem niza18.07.2006. u 09:34 - pre 215 meseci
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) ?
#include <iostream.h>
void main()
{
cout << "Pozdrav...";
}
 
Odgovor na temu

goranvuc
Goran Vucicevic
Novi Sad

Član broj: 4934
Poruke: 1846
*.neobee.net.



+41 Profil

icon Re: problem sa ponovnim dimenzionisanjem niza18.07.2006. u 10:09 - pre 215 meseci
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.
 
Odgovor na temu

Aleksandar Ružičić
Software Architect, Appricot d.o.o.
Beograd

Član broj: 26939
Poruke: 2881

Jabber: krckoorascic@gmail.com
Sajt: krcko.net


+44 Profil

icon Re: problem sa ponovnim dimenzionisanjem niza19.07.2006. u 00:32 - pre 215 meseci
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)
 
Odgovor na temu

[es] :: Visual Basic 6 :: problem sa ponovnim dimenzionisanjem niza

[ Pregleda: 2585 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.