Ćao Jano
Po uvodnom postu rekao bih da vrlo slabo poznaješ materiju pa ćemo malo detaljnije. Ovo je ceo kod iz prvog primera:
Option Compare Database
Option Explicit
Public rec As String
Public rec1 As String
Public rec2 As String
Public slovo As String
Public duzina As Integer
Public duzina1 As Integer
Public n As Integer
Public a As Integer
Sub zamena_stringova()
rec = InputBox("Unesite rec ili recenicu", "Primer 1")
duzina = Len(rec)
rec1 = InputBox("Unesite znak (ili vise njih) koji zelite da zamenite.", "Primer 1")
duzina1 = Len(rec1)
rec2 = InputBox("Unesite znake koje zelite da ubacite")
a = 0
For n = 1 To duzina
slovo = Mid(rec, n, duzina1)
If slovo = rec1 Then
a = n
Exit For
End If
Next n
If a > 0 Then
Mid(rec, a, duzina1) = rec2
MsgBox ("Novi izraz glasi: " & rec)
Else
MsgBox ("Znak(ovi) " & rec1 & " nisu pronadjeni")
End If
End Sub
Option Compare služi da definišemo način na koji će se stringovi upoređivati (Binary, Text ili Database). Database vrši case-insensitive poređenje što znači da ne razlikuje mala i velika slova (ovo je standard u Access-u), tako da će ZDRAVO, ZdRaVo i zdravo biti jedno te isto.
Option Explicit postavlja podešavanje po kome se zabranjuje ili dozvoljava implicitno deklarisanje promenljivih. Ako nije dodata opcija On ili Off, podrazumevano je On. Primer:
' Ovo je u redu; eksplicitno smo deklarisali promenljivu a i dodelili joj vrednost.
Dim a As Integer
a = 10
' Greška kada je omogućeno Option Explicit; b promenljiva nije prethodno eksplicitno deklarisana.
b = 20
Prvi deo ti je, nadam se, jasan - inicijalizujemo promenljive sa osobinom Public čime označavamo da su javne. String je tip podatka koji predstavlja niz karaktera, dok je Integer celobrojni podatak.
Public rec As String
Public rec1 As String
Public rec2 As String
Public slovo As String
Public duzina As Integer
Public duzina1 As Integer
Public n As Integer
Public a As Integer
Nakon toga, kreiramo funkciju zamena_stringova. U njoj na početku uzimamo sledeće informacije preko InputBox-a:
Rečenicu nad kojom želimo da izvršimo manipulaciju i nju smeštamo u promenljivu rec.
Znak(ove) koje želimo da izmenimo i to smeštamo u promenljivu rec1.
Znak(ove) koje želimo ubaciti umesto definisanih u rec1 i to smeštamo u promenljivu rec2.
Što se prva dva unosa tiče, nakon svakog od njih u promenljive duzina i duzina1 smeštamo dužine stringova rec i rec1 koristeći funkciju Len.
rec = InputBox("Unesite rec ili recenicu", "Primer 1")
duzina = Len(rec)
rec1 = InputBox("Unesite znak (ili vise njih) koji zelite da zamenite.", "Primer 1")
duzina1 = Len(rec1)
rec2 = InputBox("Unesite znake koje zelite da ubacite", "Primer 1")
Dodeljujemo promenljivoj a vrednost 0.
a = 0
Sada ćemo da uzmemo stavke koje sam uneo u primeru. Ovo su sada vrednosti nekih od promenljivih s početka:
rec = "zdravo"
rec1 = "o"
rec2 = "a"
duzina = 6
duzina1 = 1
Korišćenjem For...Next petlje definišemo koliko ćemo puta izvršiti određeni kod. U ovom slučaju imamo interval od n (kojem smo dodelili vrednost 1, dakle od 1) pa do vrednosti promenljive duzina (koja je u ovom slučaju 6).
U petlji koristimo Mid funkciju koja vraća određeni deo stringa. Prvi parametar je reč, drugi je pozicija od koje krećemo i treći je broj karaktera koji želimo da vratimo počev od pozicije iz drugog argumenta.
slovo = Mid(rec, n, duzina1)
Dakle, slovo promenljivoj će pri svakom koraku biti dodeljena vrednost na poziciji n u stringu rec. Petlja nam služi kako bismo prošli kroz ceo string i utvrdili da li postoji znak(ovi) koje želimo zameniti (a koji se nalazi u promenljivoj rec1), što pokazuje kod ispod.
Njegovo značenje je sledeće; ako je vrednost promenljive slovo jednaka vrednosti promenljive rec1, znači da smo pronašli znak koji želimo zameniti. Promenljivoj a u tom slučaju dodeljujemo vrednost koju promenljiva n ima u tom trenutku i prekidamo petlju (Exit For). Ukoliko to pak nije slučaj, nastavlja se dalje izvršavanje petlje, ali sada sa uvećanom vrednošću n za 1 (Next n).
If slovo = rec1 Then
a = n
Exit For
End If
Na kraju, proveravamo da li je vrednost promenljive a veće od 0. a će biti veće od 0 samo ukoliko je zadovoljen prethodni slučaj u nekom momentu (pronađen je znak koji bi trebalo zameniti unutar prvog unetog stringa). Ako jeste, koristimo Mid funkciju da bi na poziciji a zamenili znak onim koji smo uneli za ubacivanje (u promenljivoj rec2) i ispisujemo kako izgleda novi string u novom dijalogu. U suprotnom prikazujemo dijalog na kom obaveštavamo korisnika da znak(ovi) za zamenu nisu pronađeni.
If a > 0 Then
Mid(rec, a, duzina1) = rec2
MsgBox ("Novi izraz glasi: " & rec)
Else
MsgBox ("Znak(ovi) " & rec1 & " nisu pronadjeni")
End If
Javi ako ti je neki deo nejasan
|