Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Editovanje samo jedne linije txt

[es] :: Visual Basic 6 :: Editovanje samo jedne linije txt

[ Pregleda: 2600 | Odgovora: 19 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

dava
Banja Luka

Član broj: 27208
Poruke: 893



+384 Profil

icon Editovanje samo jedne linije txt02.10.2007. u 08:12 - pre 201 meseci
Kako bi se ovo moglo izvesti, znaci recimo txt fajl ima pet linija, a mi zelimo izmjeniti samo jednu od njih.
Istina, postoji dosta primjera o radu sa fajlovima, ali ovo nisam uspio pronaci.
SELECT * FROM หน่วยงานหลัก WHERE ยสันติ LIKE 'โดย%'
 
Odgovor na temu

Marko_L
Beograd

Član broj: 20532
Poruke: 2885
89.216.220.*

Jabber: Marko_L@elitesecurity.org


+828 Profil

icon Re: Editovanje samo jedne linije txt02.10.2007. u 19:13 - pre 201 meseci
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
 
Odgovor na temu

rgdrajko
Beograd

Član broj: 117734
Poruke: 710
80.93.249.*



+3 Profil

icon Re: Editovanje samo jedne linije txt02.10.2007. u 22:05 - pre 201 meseci
Mislim da je najlakse, bez neke muke i sa malo koda, to izvesti sa RichTextBox kontrolom koja vec radi kao kompletni editor. Dovoljno je samo dodati dugme snimi.

Code:
Option Explicit
Dim imefajla As String

Private Sub Command1_Click()
    RichTextBox1.SaveFile imefajla
    End
End Sub

Private Sub Form_Load()
    imefajla = App.Path & "\proba.txt"
    RichTextBox1.FileName = imefajla
End Sub

rgdrajko
Prikačeni fajlovi
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12851



+4784 Profil

icon Re: Editovanje samo jedne linije txt02.10.2007. u 22:28 - pre 201 meseci
I tako ce za tekst "test" dobiti fajl u kojem stoji:
{\rtf1\ansi\ansicpg1252\deff0{\fonttbl{\f0\fnil\fcharset0 MS Sans Serif;}}
\viewkind4\uc1\pard\lang1033\f0\fs17 test
\par }

 
Odgovor na temu

Marko_L
Beograd

Član broj: 20532
Poruke: 2885
89.216.220.*

Jabber: Marko_L@elitesecurity.org


+828 Profil

icon Re: Editovanje samo jedne linije txt02.10.2007. u 22:30 - pre 201 meseci
@rgdrajko
Pa ako ćemo tako, onda mu je još lakše da otvori text fajl u Notepadu i izmeni šta mu treba bez da se bakće sa programiranjem uopšte.
-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
 
Odgovor na temu

rgdrajko
Beograd

Član broj: 117734
Poruke: 710
80.93.249.*



+3 Profil

icon Re: Editovanje samo jedne linije txt02.10.2007. u 23:35 - pre 201 meseci
re: Shadowed
Apsolutno si u pravu za fajl koji ne postoji, bice rtf fajl, medutim Dava je rekao da je u pitanju txt fajl koji postoji. Ako ucita txt fajl i snimice ga kao txt fajl. Provereno

Citat:
Marko_L: @rgdrajko
Pa ako ćemo tako, onda mu je još lakše da otvori text fajl u Notepadu i izmeni šta mu treba bez da se bakće sa programiranjem uopšte.


Apsolutno si u pravu.
rgdrajko
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12851



+4784 Profil

icon Re: Editovanje samo jedne linije txt02.10.2007. u 23:51 - pre 201 meseci
Jok. Evo, ja sad probao - u notepad-u napisao 123, sacuvao kao c:\test.txt u project ubacio jedan tichtextbox i jedan button i sledeci kod:
Code:

Private Sub Command1_Click()
  RichTextBox1.SaveFile ("c:\test.txt")
End Sub

Private Sub Form_Load()
  RichTextBox1.FileName = "c:\test.txt"
End Sub


I kada pokrenem projekat, ucita se tekst, ja promenim u nesto drugo i kliknem na button i zatim pogledam u notepad-u fajl i dobijem TRF kod.
 
Odgovor na temu

dava
Banja Luka

Član broj: 27208
Poruke: 893



+384 Profil

icon Re: Editovanje samo jedne linije txt03.10.2007. u 07:50 - pre 201 meseci
@Marko_L istu ideju sam i ja imao, ali je doslo do novih komplikacija. Znaci uzeo sam u varijablu ostatak sadrzaja txt fajla (dio koji se ne mijenja), a dio koji se mijenja sam stavio u txtBox. Nakon izmjene, ukombinujem jedan sa drugim i upisem u txt. Pri sledecem citanju, posto citam liniju po liniju, pukne na drugoj liniji sa porukom da je EndOfFile. Tj. nakon zadnjeg upisa, sve u fajlu vidi kao jednu liniju! Sumnjam da je problem do formata texta.

Upisivanje radim ovako:
Code:

   Set FsoUpis = New FileSystemObject
   Set ts = FsoUpis.OpenTextFile(App.Path & "\init.txt", ForWriting, True, TristateFalse)
   '
   ' U BakFile varijabli je i izmjenjeni i neizmjenjeni text.
   '
   ts.Write(BakFile)



SELECT * FROM หน่วยงานหลัก WHERE ยสันติ LIKE 'โดย%'
 
Odgovor na temu

Eurora3D Team
Nebojsa - Programer & Vodja tima
Beograd

Član broj: 120376
Poruke: 900
195.252.105.*



+7 Profil

icon Re: Editovanje samo jedne linije txt03.10.2007. u 12:46 - pre 201 meseci
Kako ti izgleda ovaj BakFile string pre upisa ?
Stavi npr Debug.Print BakFile da vidis jel string uopste razdvojen na redove.
Ako nije treba da dodajes znak za odvajanje redova vbCrLf npr strBuffer = strBuffer & strNewText & vbCrLf
Mozes i da zakacis kod (ako nije problem) ili deo , jer vidim da imas ideju sta / kako da uradis ali si prevideo neku sitnicu.
Inace File object ima metode za citanje celog , citanje linije , preckakanje linije, upis .... Mozes i da dodas na kraj ako ga otvoris sa ForAppending.
Pozdrav

 
Odgovor na temu

dava
Banja Luka

Član broj: 27208
Poruke: 893



+384 Profil

icon Re: Editovanje samo jedne linije txt03.10.2007. u 14:03 - pre 201 meseci
vbCrLf je rjesenje :)
Ovo mi je hvalilo iza & chr(13) &

Hvala lepa
SELECT * FROM หน่วยงานหลัก WHERE ยสันติ LIKE 'โดย%'
 
Odgovor na temu

rgdrajko
Beograd

Član broj: 117734
Poruke: 710
80.93.249.*



+3 Profil

icon Re: Editovanje samo jedne linije txt03.10.2007. u 16:50 - pre 201 meseci
Citat:
Shadowed: Jok. Evo, ja sad probao - u notepad-u napisao 123, sacuvao kao c:\test.txt u project ubacio jedan tichtextbox i jedan button i sledeci kod:
Code:

Private Sub Command1_Click()
  RichTextBox1.SaveFile ("c:\test.txt")
End Sub

Private Sub Form_Load()
  RichTextBox1.FileName = "c:\test.txt"
End Sub


I kada pokrenem projekat, ucita se tekst, ja promenim u nesto drugo i kliknem na button i zatim pogledam u notepad-u fajl i dobijem TRF kod.


Ok, u pravu si, moja greska. Ja po navici iz Total Commandera pritisnem F3 View a ne F4 Edit.

U command buton treba ispraviti RichTextBox1.SaveFile ("c:\test.txt") sa:
Code:

RichTextBox1.SaveFile ("c:\test.txt"), rtfText

Po defaultu snima uvek kao rtf format.

Ako bas zelimo da snimimo kao rtf pisemo:

Code:
RichTextBox1.SaveFile ("c:\test.txt"), rtfRTF


Pozdrav, Rajko
rgdrajko
 
Odgovor na temu

Marko_L
Beograd

Član broj: 20532
Poruke: 2885
89.216.223.*

Jabber: Marko_L@elitesecurity.org


+828 Profil

icon Re: Editovanje samo jedne linije txt03.10.2007. u 17:01 - pre 201 meseci
I na kraju dobijemo šta ? Kopiju Notepad-a koju je teže koristiti nego sam Notepad :)
-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
 
Odgovor na temu

dava
Banja Luka

Član broj: 27208
Poruke: 893



+384 Profil

icon Re: Editovanje samo jedne linije txt04.10.2007. u 07:35 - pre 201 meseci
Na kraju dobijemo init fajl u kojem se nalaze podesavanja za program koji trenutno radim. Pri startanju prg. procita parametre iz fajla, a omogucio sam editovanje fajla iz programa sto je u stvari neophodno jer sam napravio da su neki parametri kriptovani, pa ih dekriptujem i prikazem/izmjenim.

SELECT * FROM หน่วยงานหลัก WHERE ยสันติ LIKE 'โดย%'
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12851



+4784 Profil

icon Re: Editovanje samo jedne linije txt04.10.2007. u 09:03 - pre 201 meseci
U takvoj situacijji je najbolje da imas naprvljenu funkciju koja cuva podesavanja na disk i koja cita sa diska. Onda prilikom neke izmene pozoves funciiju za cuvanje i ona to uradi. Ne treba ti posebna za izmenu pojedinacnih linija, jer je ceo fajl relativno mali.
 
Odgovor na temu

dava
Banja Luka

Član broj: 27208
Poruke: 893



+384 Profil

icon Re: Editovanje samo jedne linije txt04.10.2007. u 12:44 - pre 201 meseci
Mislim da me nisi skont'o. Podesavanja se cuvaju u init.txt fajlu na disku.
Init.txt sadrzi 7 linija - 7 parametara. Prva tri su kriptovana (FTP server, username i password za konekciju) i ona se edituju iz aplikacije. Ostali se mogu editovati direktno u txt fajlu, a to su neke putanje.
SELECT * FROM หน่วยงานหลัก WHERE ยสันติ LIKE 'โดย%'
 
Odgovor na temu

goranvuc
Goran Vucicevic
Novi Sad

Član broj: 4934
Poruke: 1846
*.dialup.neobee.net.



+41 Profil

icon Re: Editovanje samo jedne linije txt04.10.2007. u 21:56 - pre 201 meseci
Mozda da razmislis da parametre drzis u nekom xml fajlu? Tako ne bi imao problem da izmenis vrednost npr. treceg parametra pod imenom "password" a da istovremeno omogucis i direktnu izmenu teksta iz notepad-a, jer je xml ipak samo text file.

Za takve stvari je mnogo zgodnija xml struktura, koju mozes slobodno da definises i prilagodis svojim potrebama. Naravno, sve odradjujes preko Microsoft XML biblioteke (MSXML) i DOM modela.
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12851



+4784 Profil

icon Re: Editovanje samo jedne linije txt04.10.2007. u 23:46 - pre 201 meseci
Koja god da je struktura, meni izgleda najlogicnije da ima klasu Settings koja ima propertije koji odgovaraju podesavanjima i metode Load i Save. Load jednostavno izcita podatke iz fajla i popuni promenljive, a save sve promenljive sacuva u fajlu. U njima se nalazi i (de)sifrovanje. Kada hoces nesto da promenis setujes property i pozoves Settings.Save. Fajl je mali i svakako nece biti problem sto se ceo ponovo zapisuje. Jednostavnije nego da radis izmenu jednog reda.
 
Odgovor na temu

dava
Banja Luka

Član broj: 27208
Poruke: 893



+384 Profil

icon Re: Editovanje samo jedne linije txt05.10.2007. u 09:59 - pre 201 meseci
Evo napravih funkciju kojoj prosledis cetiri parametra: putanja do fajla, linija koja se edituje, karakter koji oznacava pocetak parametra i novi parametar.

Code:

Public Sub Izmjeni(PutanjaIFjl As String, Linija As Integer, NakonCHR As String, Parametar As String)


Jos jedna stvar mi je potrebna, a to je referenciranje u real-time-u. Jer kad uvucem modul u projekat potrebno je referencirati FSO.

SELECT * FROM หน่วยงานหลัก WHERE ยสันติ LIKE 'โดย%'
Prikačeni fajlovi
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12851



+4784 Profil

icon Re: Editovanje samo jedne linije txt05.10.2007. u 10:45 - pre 201 meseci
U real-time-u? Ako mislis u runtime-u, onda, koliko mi je poznato, to nije moguce. Umesto toga koristi late binding i funkciju CreateObject
 
Odgovor na temu

dava
Banja Luka

Član broj: 27208
Poruke: 893



+384 Profil

icon Re: Editovanje samo jedne linije txt06.10.2007. u 12:48 - pre 201 meseci
U real-time-u, run-time-u ili u letu sto bi rekao prost covjek. ;)
Evo nova verzija modula. Vise nije potrebno u projektu dodati referencu FSO. Koristio sam kasno vezivanje (sad ce opet biti da sam se pogresno izrazio) :)
Hvala na pomoci.
SELECT * FROM หน่วยงานหลัก WHERE ยสันติ LIKE 'โดย%'
Prikačeni fajlovi
 
Odgovor na temu

[es] :: Visual Basic 6 :: Editovanje samo jedne linije txt

[ Pregleda: 2600 | Odgovora: 19 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.