[ pctel @ 28.08.2003. 16:12 ] @
Recimo, imam u programu 60 polja za text, koje bi mi veoma odgovaralo da dodelim nizu tipa T(12,5).
Lepo ukucam
Code:
dim T(12,5) as TextBox

I Vb se ne buni. Onda dodelim vrednosti "rucno"
Code:
T(1,1)=T11
T(1,2)=T12
...

jer mislim da ne moze drugacije, i to je proslo kao moguce.
Medjutim, sada kada treba uraditi:
Code:
T(Brojac1, Brojac2).Text = " "  

nastaju problemi kad sam bio uveren da ih nece biti. Kako se to inace resava?
[ degojs @ 28.08.2003. 19:46 ] @
Koju grešku ti prijavljuje (ovako kako si napisao zaista i radi OK) ?

(Usput, nizovi počinju sa indeksom 0.)
[ pctel @ 29.08.2003. 22:21 ] @
To sa nizovima sam proverio, nije u tome problem,
greska je sledeca:
Citat:
An unhandled exception of type 'System.NullReferenceException' occurred in WindowsApplication4.exe

Additional information: Object reference not set to an instance of an object.

Izgleda da ne moze ovako, samo se pitam zasto na pocetku prihvati, a tek pri kompajliranju izbaci gresku.
[ Dragi Tata @ 29.08.2003. 22:45 ] @
Ta greška se nikad ne javlja pri kompajliranju, već u toku rada programa. Probao si da nešto radiš sa null objektom.
[ degojs @ 30.08.2003. 00:35 ] @
> T(Brojac1, Brojac2).Text = " "
> Additional information: Object reference not set to an instance of an object

Ocigledno da Brojac1 i Brojac2 imaju takve vrednosti da T(Brojac1, Brojac2) ne pokazuju na TextBox.

Proveri da li u komandama tipa:
> T(1,1)=T11
> ..

imas vrednosti na koje kasnije imas postavljene Brojac1 i Brojac2.

Odnosno, kada se desi greska pogledaj tu liniju ( T(Brojac1, Brojac2).Text ) i koje su vrednosti Brojac1 (x) i Brojac2 (y) i videces da nigde nisi postavio T(x,y) = Txy.


Pozdrav
[ pctel @ 30.08.2003. 11:43 ] @
Citat:
kada se desi greska pogledaj tu liniju ( T(Brojac1, Brojac2).Text ) i koje su vrednosti Brojac1 (x) i Brojac2 (y) i videces da nigde nisi postavio T(x,y) = Txy.



brojac1=1, brojac2=1.

takodje ne radi i ako stavim jednostavno T(1,1).Text=" " .
Ne znam da li je ovo moguce raditi. Ako moze neko neka proba kob sebe kod sebe da napravi text box T1, zatim da ga dodeli promenljivoj T(1) tipa text box, zatim da napise T(1).text="nesto", i na kraju T1=T(1), ili T1.text=T(1).text. Kod mene ni ovo ne moze, pa mozda moze da bude problem do verzije VB.NET-a.

Pomogla bi mi informacija da li ovo inace radi, ako ne radi da smisljam drugi nacin.
[ dotnet @ 30.08.2003. 16:30 ] @
Pozdrav

Tvoj problem je taj sto si ti samo deklarisao niz kao TextBox i u njemu nemas instancu nijednog TextBoxa. Probaj sledecu stvar:
Code:

Dim T(1, 1) As TextBox
T(0, 0) = New TextBox()
T(0, 0).Text = "nesto"
T1.Text = T(0, 0).Text
[ pctel @ 30.08.2003. 23:30 ] @
Hvala na odgovoru, to je resilo problem.
[ degojs @ 31.08.2003. 00:30 ] @
Hmmm.. kako je to rešenje? Pa to je potpuno "naopako" od onog što si pitao.

Ako ti radi taj kod koji je dao kolega dot net:

Citat:
Code:

Dim T(1, 1) As TextBox
T(0, 0) = New TextBox()   
                       
T(0, 0).Text = "nesto" 
                             
T1.Text = T(0, 0).Text


Onda zasigurno mora da radi i:
Code:
Dim T(1,1) As TextBox
T(0,0) = T1
T(0,0).Text = "abcdef"


Uopšte ti nije potrebno New jer ne kreiraš novi objekt, nego samo referencu na postojeći objekt (T1) stavljaš u promenjivu (prvi element niza) T(0,0).

Pošto imaš
T(0,0) = T1
sada T(0,0) i T1 pokazuju na isti objekt pa je tako kasnije potpuno svejedno da li ćeš da napišeš
T(0,0).Text = "abcdef"
ili
T1.Text = "abcdef"

Osim toga ako ćeš da radiš T1.Text = T(x,y).Text kako ćeš tu da upotrebiš petlju pa da prođeš redom kroz T11, T12,T13... ???

Naravno, podrazumevam da T1 je TextBox kontrola koja je vidljiva u toj rutini, a to jeste ako ti taj kod koji je dao dot net radi.


[ degojs @ 31.08.2003. 00:44 ] @
Citat:
dot net:
Tvoj problem je taj sto si ti samo deklarisao niz kao TextBox i u njemu nemas instancu nijednog TextBoxa. Probaj sledecu stvar:


Pa ne mora ni da kreira instance za niz. On ce da dodeli elementima niza reference na postojece objekte. Dakle:

Dim T(10,10) As TextBox
T(0,0) = TextBox1

je sasvim OK. Sada T(0,0) i TextBox1 "pokazuju" na isti objekt.

Evo test:
- stavi na formu textbox i preimenuj kontrolu u T1
- dodaj sledeći kod:
Code:

Private Sub Form1_Load (ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        
Dim T(1, 1) As TextBox
T(0, 0) = T1
T(0, 0).Text = "abcdef123"

End Sub


Radi.

[Ovu poruku je menjao degojs dana 31.08.2003. u 01:42 GMT]
[ dotnet @ 31.08.2003. 00:52 ] @
Pozdrav degojs,

Ja sam prvo pomislio da je primer isti kao ovaj sto si ti poslao, i to naravno radi. Onda sam ukapirao da on u nizu nema referencu na TextBox i zato je dobijao gresku koju je dobijao, tako da sam primer prilagodio njegovim potrebama.
[ pctel @ 31.08.2003. 03:46 ] @
Zahvaljujem svima na pomoci.
Nisam ni rekao da program radi kako treba, vec da vise ne prijavljuje gresku, sto je valjda napredak? Izvrsio sam neke izmene, ali opet ne popunjava text box-ove.
Stavio sam kod na net, pa ko ima vremena neka pogleda:
http://www.pcteldoo.co.yu/WindowsApplication4.Form1.zip (50kb)
Kao sto vidite, to je cetvrti program koji radim (a prvi je naravno bio "hello world"), znaci, mogu se ocekivati razne nelogicnosti...
[ degojs @ 31.08.2003. 05:40 ] @
hehe, baš neće - nisi stavio sve potrebne fajlove u arhivu. Najgore što nisi stavio najvažnije :)


W:\Temp\Temp\WindowsApplication4.Form1\AssemblyInfo.vb Unable to open module file 'W:\Temp\Temp\WindowsApplication4.Form1\AssemblyInfo.vb': The system cannot find the file specified.

W:\Temp\Temp\WindowsApplication4.Form1\Form1.vb Unable to open module file 'W:\Temp\Temp\WindowsApplication4.Form1\Form1.vb': The system cannot find the file specified.

'Sub Main' was not found in 'WindowsApplication4.Form1'.


Evo tebi jedan zip pa otvori kod sebe (klik na Proba_VS_2002.sln).

Pozdrav :)
[ pctel @ 31.08.2003. 14:17 ] @
OK, sad ne samo da ne prijavljuje gresku, vec i stvarno radi, hvala na pomoci.