Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: Tiedon poistamista tekstitiedostosta

Aku2 [27.11.2003 20:27:48]

#

Ongelma:

Olen tehnyt ohjelman, jossa kirjoitetaan tiedostoon tietoja.

#koe
nimi
sukunimi
#koe2
nimi2
sukunimi2
jne, jne
Eli jokainen tieto on eroteltu tuolla risuaidalla (#)

Ohjelma lataa kaikki risuaidalla merkityt rivit listboxiin ja valitsemalla jonkin listboxista, näyttää se siihen kuuluvat muut tiedot.

Nyt pitäisi saada aikaan toiminto, joka poistaisi listboxista valitun esim. #koe2 tiedot tuosta tiedostosta pois.
Eli tiedostosta häviäisi rivit...
#koe2
nimi2
sukunimi2

... riippumatta missäkohdin ne sijaitsee tekstitiedostoa.

sooda [27.11.2003 20:36:29]

#

lataa noi taulukkoon ja sitten for-luupilla pistät ne sinne. vaikka:

Sub Tallenna()

    For i = 0 to Tyyppei - 1
        if Poistettava <> i Then PistäTiedostoon 'tähän se tiedostoon lisäys juttu
    Next

End Sub

Antti Laaksonen [27.11.2003 21:00:20]

#

Lue tiedostosta yksi rivi kerrallaan ja kirjoita luettu rivi aina toiseen tiedostoon. Jos rivin ensimmäinen merkki on risuaita ja tunnus vastaa etsittyä, jätä rivi kopioimatta. Älä myöskään kopioi seuraavia rivejä tämän jälkeen. Kun rivin ensimmäinen merkki on jälleen risuaita, jatka rivien kopioimista. Lopuksi kopioi näin syntynyt tiedosto alkuperäisen tilalle.

'suuntaa-antava esimerkkikoodi, toiminnasta ei takuuta
Dim kopioi As Boolean, haku As String, rivi As String
kopioi = True
haku = "koe2"

Open "vanha.txt" For Input As #1
Open "uusi.txt" For Output As #2
Do Until Eof(1)
    Input #1, rivi
    If Left(rivi, 1) = "#" Then
        If Mid(rivi, 2) = haku Then
            kopioi = False
        ElseIf Not kopioi Then
            kopioi = True
        End If
    End If
    If kopioi Then
        Print #2, rivi
    End If
Loop
Close #2
Close #1
FileCopy "uusi.txt", "vanha.txt"

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta