Dugo nisam radio sa text fajlovima tako da se ne sećam da li postoji neki direktan način. Možda preko FSO. No, imam jednu ideju kako bi to moglo da se izvede, pa ako ti odgovara. Elem, mogao bi da čitaš fajl liniju po liniju i prepisuješ ga u neki privremeni, s tim što ćeš kad dođeš do tražene linije da upišeš novu vrednost, a onda obrišeš stari fajl i replejsuješ ga novim. U praksi to bi izgledalo nekako ovako.
Code:
Private Sub Command1_Click()
Dim brojac As Long
Dim prvi_fajl As Integer
Dim drugi_fajl As Integer
Dim sText As String
prvi_fajl = FreeFile
Open "C:\proba.txt" For Input As #prvi_fajl
drugi_fajl = FreeFile
Open "C:\privremeni.txt" For Output As #drugi_fajl
Do Until EOF(prvi_fajl)
brojac = brojac + 1
DoEvents
Line Input #prvi_fajl, sText
If brojac = 3 Then
Print #drugi_fajl, sText + "XXX"
Else
Print #drugi_fajl, sText
End If
Loop
Close #prvi_fajl
Close #drugi_fajl
Kill "C:\proba.txt"
Name "C:\privremeni.txt" As "C:\proba.txt"
End Sub
što bi trebalo da radi, naravno pod uslovom da postoji tekstualni fajl koji se nalazi na C i zove se proba.txt :)
E sad, ako ti često trebaju ovakve izmene, pogotovo ako se radi sa više fajlova, ovo bi valjalo smestiti u neku funkciju, i takođe, za svaki slučaj privremeni fajl smeštati na App.Path tako da ne moramo da mislimo da li postoji disk koji smo odredili za privremeni fajl, ili da li je isti dostupan i druge eventualnosti. Dakle, nešto ovako
Code:
Private Function IzmeniLiniju(fajl As String, linija As Long, vrednost As String) As Long
On Error GoTo greska
Dim brojac As Long
Dim prvi_fajl As Integer
Dim drugi_fajl As Integer
Dim sText As String
prvi_fajl = FreeFile
Open fajl For Input As #prvi_fajl
drugi_fajl = FreeFile
Open App.Path & "\privremeni.txt" For Output As #drugi_fajl
Do Until EOF(prvi_fajl)
brojac = brojac + 1
DoEvents
Line Input #prvi_fajl, sText
If brojac = linija Then
Print #drugi_fajl, vrednost
Else
Print #drugi_fajl, sText
End If
Loop
Close #prvi_fajl
Close #drugi_fajl
Kill fajl
Name App.Path & "\privremeni.txt" As fajl
IzmeniLiniju = 0
Exit Function
greska:
IzmeniLiniju = Err.Number
End Function
A onda poyivamo funkciju na standardan način
Code:
Private Sub Command1_Click()
Dim ret As Long
ret = IzmeniLiniju("C:\proba.txt", 4, "neka vrednost")
If ret = 0 Then
MsgBox "Operacija je uspela"
Else
MsgBox "Operacija nije uspela. Greska broj : " & ret
End If
End Sub
što će u fajlu proba.txt promeniti četvrtu liniju u "neka vrednost". Povratnu vrednost koristimo ako želimo da znamo da li je došlo do greške ili ne, i koji je broj greške. Može se naravno, iskombinovati i drugačije, ali to vidi sam :)
-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