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 SubLue 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.