[ notebookFun @ 30.04.2010. 12:08 ] @
Interesuje me da li postoji CHRTRANC() Fox Pro vec gotova funkcija u VB ???

EXAMPLE
CHTRANC("elitesecurity.org",".e,y","1,2,3") dobijamo ovo 2lit2s2curit31org

Da bez veze ne pisem funkciju ako vec postoji.
[ vuchko.vuchko @ 30.04.2010. 12:52 ] @
Postoji!

Code:
Replace(string,find,replacewith[,start[,count[,compare]]]) 


ako si to trebao...
[ notebookFun @ 02.05.2010. 15:28 ] @
Ovo radi za mjenjanje samo po jedno slovo, a CHRTRANC mijenja sve zadate karaktere u nove karaktere!
Iskoristio sam funkciju Replace i pomocu nje napravio funkciju CHTRANC.
[ vuchko.vuchko @ 02.05.2010. 20:04 ] @
Krivi navod...

Citat:
... Ovo radi za mjenjanje samo po jedno slovo...


To ne odgovara istini jer ova funkcija moze da mijenja citave slogove pa cak i rijeci... evo npr.

Code:
Private Sub Command1_Click()
Dim Txt1, Txt2 As String
Txt1 = "Idem na pivo."
Txt2 = Replace(Txt1, "pivo", "sokic")
MsgBox Txt2
End Sub


[ notebookFun @ 02.05.2010. 20:28 ] @
Aj uradi ovo sa sa replace funkcijom

CHTRANC("elitesecurity.org",".e,y","1,2,3") dobijamo ovo 2lit2s2curit31org

Ali da ne koristis tri puta replace funkciju, i da ne koristis neku petlju.Zamisli da trebas da zamjenis 50 karaktera od jednom.

Ja sam napravio CHTRANC funkciju tako sto sam ubacio REPLACE() u for petlju.

[ vuchko.vuchko @ 02.05.2010. 21:13 ] @
taj dio nisam naveo u krivom navodu
[ notebookFun @ 02.05.2010. 21:22 ] @
Ako bi radio pjeske, onda bih mogao da korisim IF sa MID unutar FOR ili WHILE(i<LEN(rijec)) pa bih mjenjao svaki karakter sa drugim :)

Morao bih svaki karakter odvojeno da poredim :)
[ Marko_L @ 02.05.2010. 21:42 ] @
Rekao bih da se ovde malo mešaju pojmovi. Replace funkcija menja bilo koji niz u odabranom stringu u neki drugi niz. Niz može biti i slovo i reč i rečenica, tako da nema govora o menjanju slovo po slovo, niti ima potrebe za korišćenjem MID funkcije. Ako je potrebno odraditi višestruki Replace, mislim da ne postoji ugrađena u VB-u za tako nešto, ali ne bi trebalo da bude problem da se napravi funkcija. Eto i sam kažeš da si napravio funkciju koja to radi. Ne znam kako si to odradio, potšo nisi postovao rešenje, što bi bilo jako lepo od tebe, ali se nadam da nisi išao slovo po slovo. Evo kako bih ja to uradio.
Code:
Private Function MultipleReplace(sText As String, sFindWhat As String, sReplaceWith As String, sDelimiter As String) As String
Dim I As Long
Dim sFindWhatArray() As String
Dim sReplaceWithArray() As String

sFindWhatArray = Split(sFindWhat, sDelimiter)
sReplaceWithArray = Split(sReplaceWith, sDelimiter)

For I = LBound(sFindWhatArray) To UBound(sFindWhatArray)
    sText = Replace(sText, sFindWhatArray(I), sReplaceWithArray(I))
Next I

MultipleReplace = sText
End Function

A poziva se naravno ovako
Code:
Private Sub cmdTest_Click()
    MsgBox MultipleReplace("elitesecurity.org", ".,e,y", "1,2,3", ",")
End Sub

[ notebookFun @ 03.05.2010. 18:38 ] @
Evo ja sam na slican nacin uradio, samo sto kod mene izgleda malo prostije kod, sto se veoma cijeni :)


Code:
Global RET As String
Global i As Integer


Public Function CHRTRANC(rijec As String, karakteri As String, zkarakteri As String) As String

For i = 1 To Len(rijec)
    rijec = Replace(rijec, Mid(karakteri, i, 1), Mid(zkarakteri, i, 1))
    i = i + 1
Next i

RET = rijec 'Funkcija vraca RET, novi string sa zamjenjenim karakterima
End Function