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.
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
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"
Aihe on jo aika vanha, joten et voi enää vastata siihen.