On tekstitiedosto, jossa on tallennettu käyttäjätunnus jasalasana samalle riville:
minnapo;juuuuuuuuu maurilo;hhhhhhhhh jonni;hupi kake;kopia
Nyt pitäsi selata tiedostoa ja muuttaa vain yhtä tunnusta… mutta mulla on virhe sekä selaa, että muuta aliohjelmassa. Selaa ohjelmassa en osaa jakaa kahdelle riville eli käyttöliittymässä on kayttäjätunnus ja salasana erillisillä tekstikentissä.Muutos aliohjelman muuttaa kyllä, mutta poistaa kaikki muut tunnustukset tiedostosta. Koodi on tässä:
Private Sub cmdSelaa_Click()
txtKäyttäjä = ObjTextStream.ReadLine
txtSalasana = ObjTextStream.ReadLine
'Jos kyseessä on viimeinen tietue, niin ohjelma lähettää ilmoituksen siitä
If ObjTextStream.AtEndOfStream Then
MsgBox "Se oli viimeinen tietue. Muuta tatä tai sulje selain lomakkeen yläkulmasta"
End If
End Sub
Private Sub cmdTalleta_Click()
'Tallentaa kyllä koravut tiedot, mutta poistaa kaikki entisetkin
Set ObjTextStream = ObjFso.OpenTextFile("C:\Testi\Tunnukset.txt", ForWriting)
ObjTextStream.WriteLine txtKäyttäjä
ObjTextStream.WriteLine txtSalasana
'sulkee tiedoston
ObjTextStream.Close
MsgBox "Muutos tallennettu tiedostoon. Sulje selain lomakkeen yläkulmasta"
End SubKoodista päätellen kyseessä on VB.net.
Ei vaan VB 6.0. Siinä on uudempaa File System Object (FSO) -objektimallia. Pitäs onnistua senkin avulla.
Käytä ForAppending menetelmää niin lisää viimeiseksi.
Can be one of three constants: ForReading, ForWriting, or ForAppending.
Joo, mutta... silloinhan se ei muuta käyttäjän salasanaa, niin kuin olisi tarkoitus.
Käytä hajatiedostoa (Random)
Nyt en oikein ymmärrä. Kumpaan ongelmaan se voisi auttaa selaa vai talleta?
Tallentamiseen lähinnä. Mutta onhan hajatiedoston luku ja sinne kirjoitus verrattomasti kätevämpää kuin rivitiedoston.
Autatko lisää? En löydä hajatiedoston käytön ohjeita.
Ensin valmis tekstitiedosto on muutettava hajatiedostoksi. Hajatiedoston tietueen tyyppi määritellään moduulissa Type-lauseella:
Type Tunnus 'käyttäjätunnus ja salasana
Dim kt As String * 12 'enintään 12 merkkiä
Dim ss As String * 12 'voit muuttaa maksimimäärän halutessasi
End TypeLomakkeella määritellään tunnus, esim ks
Dim ks As Tunnus
Lue tekstitiedostosta rivikerrallaan tunnukset ja salasanat, jotka on pilkulla erotettu. Aseta ne tunnukseen ja tallenna hajatiedostoon esim. Tunnukset.dat
'hajatiedoston avaus
Open "C:\Testi\Tunnukset\Tunnukset.dat" For Random As 2 Len = Len(ks)
'lukusilmukka, jossa luet tekstitiedoston rivi kerrallaan loppuun
...
ks.kt = txtKäyttäjä
ks.ss = txtSalasana
Put #2, , ks
Loop
CloseAvatusta hajatiedostosta voit lukea tietueen
Get #2, I, ks 'I = tietuenumero, ensimmäinen 1
'muuta salasana
ks.ss = uusisalasana
'tallenna
Put #2, I, ks
'Sulje tiedosto kun ohjelma päättyy
CloseToivottavasti tästä on apua ja toivottavasti ei tullut paljoa kirjoitusvirheitä.
Kiitos! Kokeilen...
Aihe on jo aika vanha, joten et voi enää vastata siihen.