Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 13 odgovora
  • 4.338 pregleda

Najnovija ↓

kako razloziti tekst 05.10.2007. u 21:19 · pre 232 meseca #1
Pozdrav, jedno pitanje, npr u TextBox se upise rec od nekoliko slova, kako napisati da se ta rec razlozi na slova na primer da svako slovo bude dodeljeno jedno promenljivoj

npr:

rec: tekst

1. promenljiva = t
2. promenljiva = e
3. promenljiva = k
4. promenljiva = s
5. promenljiva = t
Re: kako razloziti tekst 05.10.2007. u 22:58 · pre 232 meseca #2
Za tako nešto je bolje koristiti matricu, jer verovatno nećeš uvek znati tačnu dužinu teksta, pa nećeš znati koliko varijabli trebaš da deklarišeš.
Code:
Dim sText() As String
Dim i As Long
    For i = 1 To Len(Text1.Text)
        ReDim Preserve sText(i)
        sText(i) = Mid(Text1.Text, i, 1)
    Next i

i tako ćeš dobiti matricu sText gde ti je sText(1) prvo slovo, sText(2) drugo slovo i tako dalje. Prvo i zadnje slovo možeš dobiti funkcijama LBound i UBound, recimo ako hoćeš da znaš koje je zadnje slovo
Code:
MsgBox sText(Ubound(sText))
Potpis
-Odracuonogakomijedrpiorazmaknicu.
-Ne rxdi mi txstxturx, kxd god hocu dx
ukucxm "x" onx ukucx "x".
-Ko kaaz e da ja neuummem da kuuca
m.
-Piše "Insert disk 3", a jedva sam i ova
dva ugurao u drajv
-Postoje samo dve osobe kojima
verujem, jedna sam ja, a druga nisi ti
Re: kako razloziti tekst 07.10.2007. u 00:59 · pre 232 meseca #4
@Marko: imam par zamerki na tvoj post :)
Citat:
Za tako nešto je bolje koristiti matricu, jer verovatno nećeš uvek znati tačnu dužinu teksta, pa nećeš znati koliko varijabli trebaš da deklarišeš.

mozda gresim, ali koliko ja znam matrica ne moze da ima samo jednu dimenziju, to je niz (a matrica je visedimenzionlni niz)... ali terminologija i nije toliko bitna, ono sto mi "smeta" u tvom kodu je onaj ReDim Preserve... koji je nepotreban i usporava izvrsavanje koda, elem, potreban je samo ReDim (i to ne Preserve) pre for petlje (jer se pre ulaska u petlju zna duzina stringa koji se deli), znaci 'vako:
Code:

Dim sText() As String * 1 ' dodatna optimizacija
Dim i As Long

ReDim sText(Len(Text1.Text))

For i = 1 To Len(Text1.Text)
    sText(i) = Mid(Text1.Text, i, 1)
Next i
Potpis
rafforum.rs - Forum Računarskog Fakulteta
Re: kako razloziti tekst 07.10.2007. u 06:42 · pre 232 meseca #5
Citat:
mozda gresim, ali koliko ja znam matrica ne moze da ima samo jednu dimenziju, to je niz (a matrica je visedimenzionlni niz)... ali terminologija i nije toliko bitna

Ma stvar je u terminologiju i kako navikneš da izgovaraš pojedine stvari. U programerskom rečinku zapravo i ne postoji reč matrica (matrix), već samo array i multidimensional array, što je zapravo niz i multidimanzionalni niz (koji može da se zove matricom). E sad, nekako sam vremenom navikao da bilo koji array nazivam matricom što možda jeste greška, ali se uglavnom sporazumevam sa kolegama :)
Citat:
ono sto mi "smeta" u tvom kodu je onaj ReDim Preserve... koji je nepotreban i usporava izvrsavanje koda, elem, potreban je samo ReDim (i to ne Preserve) pre for petlje (jer se pre ulaska u petlju zna duzina stringa koji se deli), znaci 'vako:

A što ti smeta ? :) Zamisli da je kojim slučajem došao rgdrajko, to bi izgledalo nekako ovako
Code:
If Mid(Text1.Text, 1, 1) = "a" then PrvoSlovoIzvucenoIztextBoxaMalopre = "a"
If Mid(Text1.Text, 1, 1) = "b" then PrvoSlovoIzvucenoIztextBoxaMalopre = "b"
...
If Mid(Text1.Text, 5, 1) = "a" then DrugoSlovoIzvucenoIztextBoxaMalopre = "a"
...
Msgbox PrvoSlovoIzvucenoIztextBoxaMalopre & DrugoSlovoIzvucenoIztextBoxaMalopre & TreceSlovoIzvucenoIztextBoxaMalopre

Šalu na stranu, slažem se sa tobom. Iako se ne dobija neko značajno ubrzanje, uvek je dobro optimizovati kod i izbaciti nepotrebne stvari. Kod sam napisao onako "na prvu loptu" bez razmišljanja.
Potpis
-Odracuonogakomijedrpiorazmaknicu.
-Ne rxdi mi txstxturx, kxd god hocu dx
ukucxm "x" onx ukucx "x".
-Ko kaaz e da ja neuummem da kuuca
m.
-Piše "Insert disk 3", a jedva sam i ova
dva ugurao u drajv
-Postoje samo dve osobe kojima
verujem, jedna sam ja, a druga nisi ti
Re: kako razloziti tekst 07.10.2007. u 14:06 · pre 232 meseca #6
ma znam ja da si to ti pisao na brzinu, i da znas "da tako ne treba", nego da se ostali ne bi naviknuli da koriste ReDim Preserve unutar For petlje :D

Citat:

A što ti smeta ? :) Zamisli da je kojim slučajem došao rgdrajko, to bi izgledalo nekako ovako
Code:

If Mid(Text1.Text, 1, 1) = "a" then PrvoSlovoIzvucenoIztextBoxaMalopre = "a"
If Mid(Text1.Text, 1, 1) = "b" then PrvoSlovoIzvucenoIztextBoxaMalopre = "b"
...
If Mid(Text1.Text, 5, 1) = "a" then DrugoSlovoIzvucenoIztextBoxaMalopre = "a"
...
Msgbox PrvoSlovoIzvucenoIztextBoxaMalopre & DrugoSlovoIzvucenoIztextBoxaMalopre & TreceSlovoIzvucenoIztextBoxaMalopre


LOL :D
Potpis
rafforum.rs - Forum Računarskog Fakulteta
Re: kako razloziti tekst 09.10.2007. u 20:55 · pre 232 meseca #7
Kad ste vec krenili sa ispravkama moram i ja da se umijesam.

Kao prvo koliko ja znam niz uvijek pocinje od Nule nevazno dali je
posle definisan Sa Redim ili Redim Preserve, uvijek mu je nulti prvi zapis,
a obadvojica u for petlji krecete od 1 i preskacete odnosno
ostavljate prazan prvi odnosno nulti zapis.
I ovo sto je @Marko_l rekao, sa LBound nebi dobi prvo slovo rijci nego
bi dobio 0 zapis koji je prazan.

Slazem se sa @Aleksandrom da je u ovom slucaju bolje koristiti Redim
od Redim Preserve ali ima situacija gdje je on neizbijezan.Imam jednu
aplikaciju u kojoj sam Koristio Redim Preserve koji se vrti u petlji po nekoliko
hiljada puta i nisam primijetio da nesto vidno usporava program.

Jos nesto, komanda Redim ponistava citav niz, odnosno ukoliko je u nizu
bilo nekih podataka oni posle Redim vise nece postojati, dok Redim Preserve samo
definise novu duzinu niza ne brisuci podatke koji se vec nalaze u nizu.
Potpis
Ero S Onoga Sveta
Re: kako razloziti tekst 09.10.2007. u 21:40 · pre 232 meseca #8
Da, to je tačno, ali lako rešivo.
Umesto
Code:
ReDim sText(Len(Text1.Text))

treba da ide
Code:
ReDim sText(1 To Len(Text1.Text))

i to ako mu uopšte treba da dobije prvo slovo na taj način. Uvek može da ga zatraži sa sText(1).
Potpis
-Odracuonogakomijedrpiorazmaknicu.
-Ne rxdi mi txstxturx, kxd god hocu dx
ukucxm "x" onx ukucx "x".
-Ko kaaz e da ja neuummem da kuuca
m.
-Piše "Insert disk 3", a jedva sam i ova
dva ugurao u drajv
-Postoje samo dve osobe kojima
verujem, jedna sam ja, a druga nisi ti
Re: kako razloziti tekst 11.10.2007. u 23:03 · pre 232 meseca #9
Citat:
Marko_L: A što ti smeta ? :) Zamisli da je kojim slučajem došao rgdrajko...


Ok, shvaticu ovo kao salu coveka koji nezna kada je vreme za salu i koji ne ume da napravi salu, a drugo gospodine Marko ja i ti nismo prijatelji da bi se ti tako salio samnom. Postuj ti mene i ja cu tebe.

Svi izlozeni primeri, od oba moderatora, koji su se ovde prepucavali sa silnim znanjem, do ove zadnje ispravke na koju je opomenuo Bin laden kada se unesu u program ne rade i tu je Bin Laden apsolutno u pravu. Vi cesto pisete kod bez testiranja i onda se pojavljuju mnoge greske dok vas neko ne ispravi, ne bi bila losa praksa da uz svaki komentar ubuduce prikacite i vas kod u zip fajlu, onda se ovakve greske nece desavati.

Citat:
Marko_L: Da, to je tačno, ali lako rešivo.
Umesto
Code:
ReDim sText(Len(Text1.Text))

treba da ide
Code:
ReDim sText(1 To Len(Text1.Text))

i to ako mu uopšte treba da dobije prvo slovo na taj način. Uvek može da ga zatraži sa sText(1).


Umesto ovog gornjeg koda mogao si da stavis:
Code:
Option Base 1


i sve bi radilo. Option Base 0 je podrazumevana vrednost sa kojom si od prvog posta baratao.


Potpis
rgdrajko
Re: kako razloziti tekst 11.10.2007. u 23:40 · pre 232 meseca #10
U Markovom kodu ne radi jedino taj LBound, ali ne znam zasto ga uopste pominjao, prvi element dobijes index-om 1, drugi 2 i tako do UBound. Nije nikakav problem ako koristis elemente niza od 1 (osim maaalo veceg zauzeca memorije, bar u ovom slucaju) pod uslovom da tako stalno radis.

Sto se shale tice, necu mnogo komentarisati ali mislim da je imala osnova :)
Potpis
Nebojsa Milanovic:
-Trumpa smatram vrhunskim predsednikom i voleo bih da živim u državi na čijem je on čelu
-Rusija ne laže, ne vodi osvajačke ratove
-Trump je svetla tačka u USA blatu
-Elon Musk, možda najpametniji i najtrezveniji Amerikanac
Re: kako razloziti tekst 12.10.2007. u 00:44 · pre 232 meseca
izmenjeno 1 put, poslednji put rgdrajko 12.10.2007. u 01:21
  1. rgdrajko12.10.2007. u 01:21zapis iz teksta poruke
#11
Citat:
Shadowed: U Markovom kodu ne radi jedino taj LBound, ali ne znam zasto ga uopste pominjao, prvi element dobijes index-om 1, drugi 2 i tako do UBound. Nije nikakav problem ako koristis elemente niza od 1 (osim maaalo veceg zauzeca memorije, bar u ovom slucaju) pod uslovom da tako stalno radis.

Sto se shale tice, necu mnogo komentarisati ali mislim da je imala osnova :)


Mislis da je ovo korektno.
Potpis
rgdrajko
Re: kako razloziti tekst 12.10.2007. u 01:39 · pre 232 meseca #13
+Evo jos jedan polu-offtopic.
Moj prvi post je bio izazvan @aleksanrovim ispravkom @markovog rjesenja, odnosno
vec sam jednom rekao da je ovaj forum postao monoton i u dosta slucajeva se svodi
na prepucavanje izmedju najaktivnijih clanova i modaratora cim neko primjeti
neku "greskicu" odnosno neko drugo rjeseje. Poceli smo najbanalniji
problem da razlazemo na detalje. Jedino sto me raduje je to sto je
ovde izgleda pocela da vlada demokretija, pa su i Moderatori poceli jedan drugog
da ispravljaju.

Citat:
ma znam ja da si to ti pisao na brzinu, i da znas "da tako ne treba",
nego da se ostali ne bi naviknuli da koriste ReDim Preserve unutar For petlje


U 90% slucajeva (Redim Preserve) se koristi BAS u petlji, doduse vecinom u (Do) petlji
odnosno kad neznas tacan broj izvrsenja petlje i ne znam zbog cega ono "da se ostali
ne bi navukli" i "da tako ne treba"?

Citat:
Nije nikakav problem ako koristis elemente niza od 1
(osim maaalo veceg zauzeca memorije, bar u ovom slucaju) pod uslovom da tako stalno radis.


Zauzece memoirje je najmanji problem u ovom slucaju, problem je ako se pokusa iscitati
prazan zapis u nizu, doci ce do greske. Tj. ne u ovom slucaju, nego nastavljam ispravke
koje je @Aleksandar poceo, u globalnom pogledu kada uzmemo da skoro sve komponente,
kontrole i ostalo po defoult-u pocinje od 0 bolje je u svakom smislu popunjavanje niza
poceti od 0.
A sto se tice zauzeca memorije niza, u ovom slucaju vise memorije ce zauzet taj prazan
zapis nego ako mu dodijelimo vrijednost nekog znaka, osim u slucaju kako je
@aleksandar rekao Za dodatnu optimalizaciju. Ali kad dodamo da se tu radi o byte-ovima
o tome je glupost pricati.
Potpis
Ero S Onoga Sveta
Re: kako razloziti tekst 12.10.2007. u 02:40 · pre 232 meseca #14
ReDim koristis onako kako je u odgovarajucoj situaciji najbolje. Ovde je bolje jednom pre petlje. Negde je mozda neophodno da se vrsi svaki put unutar petlje. Sto manje, to bolje. Nisam siguran, ali ako nisam nesto pomesao (slicna je stvar sa stringovima u .net-u), kada uradis ReDim Preserve, kreira se nov niz pa se zatim kopira sadrzaj starog u taj nov a stari odbacuje. Zbog toga (dodatno) preporucljivo vrsiti ovo sto manje puta.

Ostalo se slazem. Samo bih napomenuo da sam rekao "ako tako stalno radis". Znaci, ako uvek citas od 1, onda nije problem. Inace, ja praktikujem od 0 osim kada je nekad logika aplikacije takva da je lakse koristiti od 1 nego stalno neku vrednost smanjivati, povecavati za 1.
Potpis
Nebojsa Milanovic:
-Trumpa smatram vrhunskim predsednikom i voleo bih da živim u državi na čijem je on čelu
-Rusija ne laže, ne vodi osvajačke ratove
-Trump je svetla tačka u USA blatu
-Elon Musk, možda najpametniji i najtrezveniji Amerikanac
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme