[ Shadowed @ 19.10.2003. 12:00 ] @
Malo nesrecan naslov al' ajd.

Sladeci (jednostavan) kod se malo cudno ponasa:
Code:

Dim a As String

Private Sub Command1_Click()
    Dim i As Long
    
    For i = 1 To 100000
        Text1.Text = i
        Text1.Refresh
        a = a & "XXXXXXXXXX"
    Next i
End Sub

Naime, kada kliknem na taster Text1 odbroji do 4191 i onda srane. Program ne odgovara. On ne odgovara ni tokom odbrojavanja ali bar odbrojava.

Zna li neko zasto se ovo desava?

Edit: Probao sam da kompajliram program i kada pokrenem .exe on nastavi da broji. Ono o cemu sam ranije pisao je bilo bez pravljenja .exe-a vec samo pokretanje sa Run (F5).
U cemu je razlika?
[ mladenovicz @ 19.10.2003. 14:59 ] @
Meni je odbrojao do kraja, bez stajanja sa F5 - znaci ne EXE (trebalo je docekati da odbroji ;))

Ne znam sta podrazumevas pod "Program ne odgovara", ali probaj ovo

Code:

Private a As String

Private Sub Command1_Click()
Dim i As Long

    For i = 1 To 100000
        Text1.Text = i
        Text1.Refresh
        a = a & "XXXXXXXXXX"
        DoEvents
    Next i
End Sub

Private Sub Command2_Click()
Static c As Long
    c = c + 1
    Text2.Text = c
End Sub


i videces da kad imas DoEvents program reaguje na klik na Command2. Bez DoEvents ne reaguje (bar kod mene).
[ Shadowed @ 19.10.2003. 15:11 ] @
Nasao sam delimicno u cemu je problem. Prestane da broji ako je pokrenut Task Mnanager i selektovan BAS VB6.exe. Znaci u trenutku kad ga selektujem u listi procesa onprestane da odbrojava. Mada i kad prestane da odbrojava nastavlja da vrti petlju, provereno.
Sad, zasto se to desava nemam pojma.
Jos se pitam zasto ne odbrojava istom brzinom vec sve sporije i sporije.
[ Krsta @ 19.10.2003. 23:24 ] @
Pa to ti je zbog ovog a = a & "XXXXXXXXXX",
svaki put se promenjiva a duplira.
[ Shadowed @ 19.10.2003. 23:55 ] @
Ne duplira se. Uvecava se za "XXXXXXXXXX". Duplirala bi se kada bi bilo a = a & a.
[ byTer @ 20.10.2003. 12:18 ] @
Verovatno ti je memorija prepuna. Ja sam nesto slicno pokusao ali ne moze da se unese vishe od 2 GB valjda...
[ mladenovicz @ 20.10.2003. 12:55 ] @
Taj string te sigurno usporava. On bi na kraju trebalo da ima milion karaktera. Mi smo u firmi svojevremeno napravili jednu klasu LongText koja radi sa velikim stringovima. String se cuva kao niz bajtova a konkateniranje se radi sa CopyMem. I radi brze nego &.
[ Krsta @ 31.10.2003. 20:14 ] @
Citat:
Shadowed:
Ne duplira se. Uvecava se za "XXXXXXXXXX". Duplirala bi se kada bi bilo a = a & a.


Pogresno sam se izrazio za dupliranje.
U svakom slucaju to ti sigurno usporava program.
[ Shadowed @ 31.10.2003. 20:58 ] @
Svakako da je taj string ono sto je usporavalo program jer niceg drugog nije ni bilo.
Ono sto je neobicno je to sto se brzina izvrsavanja sve vise i vise smanjivala - svaki prolazak kroz petlju je trajao duze iako se ovak dodaje string iste duzine. Verovatno se ispod haube nesto radi duz celog stringa pa svaki put ima vise posla.
No, ispostavilo se da program ne blokira vec samo prestaje da ispisuje u TextBox-u. S obzirom da ide sve sporije i sporije nikako nisam stizao do kraja sve dok nisam smanjio broj prolaza pa je trajalo krace.