Šta je novo?

VB - TextBox > Niz karaktera > TextBox ??

luka.l

Čuven
Učlanjen(a)
03.01.2002
Poruke
1,174
Poena
649
Da li i kako mogu da prebacim tekst iz TextBox-a u niz karaktera koji cu posle da obradim i vratim u TextBox?

Pozdrav!
 
Pa ako imas string S, samo stavis

S = TextBox.Text (ili koji mu je vec property za tekst)

i kad zavrsis sa cackanjem S-a, samo vratis

TextBox.Text = S
 
Nisam bio shvacen...... :D

Mislio sam, kako da jedan veliki string prebacim u jednodimenzionalni niz kod koga se svaki clan niza sastoji iz jednog, sledeceg karaktera datog stringa.

No, uspeo sam to da uradim, evo bas sad sa Len funkcijom (u medjuvremenu sam otkrio tu funkciju, na nekom stranom sajtu, tako da me ne kritikujete sto se odma' 'vatam za forum, a ne za search) :angel:

Bilo kako bilo, hvala!

Jedino, da li neko zna elegantnije resenje? Ja sam smislio ovo. Da li ima neko "opsteprihvaceno" resenje za ovo?

Kod:
Private Sub Command1_Click()
    Tekst = Text1.Text
    N = Len(Tekst)
    For i = 1 To N
    arrayMdniZ(1) = Left(Tekst, i)
    arrayNIz(i) = Right(arrayMdniZ(1), 1)
    Next i
                   
End Sub

Pozdrav!
 
Poslednja izmena:
Ne mogu bas najbolje da razumem ovu gimnastiku :sceptic:

Kod:
arrayMdniZ(1) = Left(Tekst, i)
arrayNIz(i) = Right(arrayMdniZ(1), 1)

Po meni bi trebalo ovako

Kod:
Option Base 0
Option Explicit

Private Sub Command1_Click()
    Dim tekst As String
    Dim i As Integer
    Dim N As Integer
    Dim niz() As String
    tekst = Text1.Text
    N = Len(tekst)
    For i = 0 To N - 1
        ReDim Preserve niz(i)
        niz(i) = Mid(tekst, i + 1, 1)
    Next i
End Sub
 
Ovako:

arrayMdniZ(1) = Left(Tekst, i) ovo uhvati sve karaktere do i-tog, a onda
arrayNIz(i) = Right(arrayMdniZ(1), 1) uzme samo poslednji karakter od onog prethodnog. Tako da kako se povecava i uzima se ceo tekst do i-tog karaktera i onda se uzima samo prvi sa desna odnosno i-ti karakter.

Tu i jeste caka zasto je to lose. Zato sto kod svakog sledeceg i-ja on kaci ceo tekst pre toga.

Pretpostavljam da funkcija Mid() uzima samo odredjeni karakter naveden sa i?

To je upravo ono sto nisam znao kako da napisem pa sam uradio kako sam vec naveo....

Pozdrav i hvala!
 
Rešenje iz jednog reda:
arrayNIz = Split(StrConv(Text1, vbUnicode), Chr(0))
za VB >= 6.0, ako Text1 nema unicode karaktere.
 
VIA je napisao(la):
Rešenje iz jednog reda:
arrayNIz = Split(StrConv(Text1, vbUnicode), Chr(0))
za VB >= 6.0, ako Text1 nema unicode karaktere.

Bravo!

:wave:
 
Hm, fino izgleda, ali jel' moze neko objasnjenje. Meni to ne radi.

Pozdrav!
 
luka.l je napisao(la):
Hm, fino izgleda, ali jel' moze neko objasnjenje. Meni to ne radi.

Pozdrav!
Unicode podrazumeva da jedan karakter čine dva bajta. Za karakter koji pripada običnoj ascii tabeli drugi bajt je onaj chr(0) koji funkcija Split traži unutar nekog teksta, te isiti deli i dodeljuje svaki ne chr(0) karakter (slovo) posebnom elementu u indeksiranom nizu (array). Da bi iz ne unicode texta dobio unicode brine se funkcija StrConv.
Naravno, ovaj primer, iako lepo izgleda u jednom redu, predstavlja lošije rešenje jer računar prvo treba da duplira veličinu polaznog teksta da bi odradio ono što prethodna "višeredna" rešenja čine.
 
Vrh Dno