En ole vieläkään tajunnut tätä, mutta olisi tarvetta sillaiselle koodille, joka ensin katsoisi tiedostosta tiedot ja sitten poistaisi käyttäjän haluaman tiedon sieltä.
Esimerkiksi jos käyttäjä antaa komennon "dir" niin se avaisi vaikka hakemisto.txt tiedoston ja näyttäisi sen sisällön esim:
ohjelma.exe
ohjelma.txt
peli.exe
peli.txt
ja käyttäjä antaisi sitten komennon "del ohjelma.exe" ja laittaisi uudelleen komennon "dir" niin sieltä olisikin kadonnut tuo ohjelma.exe.
Eli aluksi luet tiedoston sisällön taulukkoon, yksi rivi aina yhteen soluun.
esim.
Dim Taulu(1 To 5) As String Open App.Path & "\filu.txt" for Input As #1 Do Until EOF(1) R = R + 1 Line Input#1, Rivi Taulu(R) = Rivi Loop Close #1
Nyt kun sinulla on taulukossa tiedot, vertaillaan sieltä löytyviä merkkijonoja:
Sub Del(Etsittävä As String) For I = 1 To 5 If Taulu(I) = Etsittävä Then Taulu(I) = "" End if Next End Sub
Mikäli siis etsittävä merkkijono löytyy se poistetaan.
Sitten jäljelle jää enään tallennus,
Open App.Path & "\filu.txt" For Output As #2 For I = 1 To 5 'tarkistetaan ettei tiedostoon tule tyhjiä rivejä. If Taulu(I) <> "" Then 'vbcrlf tarkoittaa rivin vaihtoa Print#2, Taulu(I) &vbcrlf End if Next Close #2
Koodit on heitetty lonkalta joten toimivuutta en takaa..
EDIT:
Ja nyt sitten vasta huomasin että kyseinen olisi tullut qb:lle :(
No kaipa tuosta vb koodista idean ymmärrät...
Laittamalla nuo taulukkoon
a$(0) = "ohjelma.exe"
a$(1) = "ohjelma.txt"
jne...
jos haluat poistaa, tarkistetaan onko sana taulukossa
for q = 0 to 3 if a$(q) = "ohjelma.exe" then a$ = "" next
ja tallennat ne uudelleen taulukkoon
for q = 0 to 3 if a$(q) <> "" then a$(q) = a$(q) next
Edit: Empä tietenkään ehtinyt ensiksi. Ja sitä paitsi Tuomas. Kyse oli QBasicista
Voihan tuon ehkä noinkin tehdä, kuten tuomas esitti mutta mieluummin kannattaisi käyttää FileListBoxia. Asetetaan kontrollin polku haluttuun kansioon, klikataan poistettavaa tiedostoa ja poistetaan Kill-käskyllä.
QB:llä tämä ei onnistu, mutta rndprogyn ohjeilla korjaamalla edellisen silmukan ehtolauseen niin, että poistetaan tiedosto eikä vain luettelosta tyhjätä ko. tiedostonimeä. Jälkimmäinen silmukka on tarpeeton.
Tuomaksen koodia voinee käyttää suoraan QB:llä. App.Path on kuitenkin muutettava CURDIR$-funktioksi, joka ei tosin toimi alkuperäisessä QBasicissa. Tuota &vbcrlf:iä en tunne, mutta kai sekin voidaan jotenkin korvata. Muuten koodi taitaa toimia QB:llä aivan samassa muodossa, siis olettaen, että tuo nyt sitten toimii, jos sitä ei kerran ole testattu.
hunajvohveli kirjoitti:
&vbcrlf:iä en tunne, mutta kai sekin voidaan jotenkin korvata
Se on rivinvaihto.
hunajavohveli kirjoitti:
Tuota &vbcrlf:iä en tunne, mutta kai sekin voidaan jotenkin korvata.
vbCrLf on merkkijonovakio (tuo & tuossahan on siis merkkijonojen yhdistysoperaattori, välilyönti vaan jäänyt pois, niin näyttää hassulta), jossa on rivinvaihtomerkki. QB:ssä sen voi korvata Chr$(13) & Chr$(10)
Aihe on jo aika vanha, joten et voi enää vastata siihen.