Eli miten kirjoitetaan VB:llä tekstitiedoston alkuun siten että korvaa ensimmäisenä olevan rivin ja säilyttää muut tekstit tallessa?
Lue vaikka ensin kaikki talteen taulukkoon, muuta taulukosta ensimmäistä riviä ja tallenna sitten koko taulukko tiedostoon.
Eikö onnistus helpommin esim. normaali tiedostoon kirjoituksella, "append" ja sitten SEEK:illä vaan riville 1? Sitten poistas rivin 2? Vaan kun en tiedä miten tuon syntaksin sais kohdalleen tuosta seek:istä...
Lue vain suosiolla taulukkoon, sitten on helpompi käsitellä isojakin tiedostoja. Jos et osaa lukea tietoja taulukoon niin laitetaan nyt vielä pieni esimerkki kaiken varalta:
Public Sub LataaTaulukkoon() Dim Taulukko(1 TO 10) as string Open App.Path & "\filu.txt" For Input As #1 Do until Eof(1) doevents line input #1, Rivi R = R + 1 Taulukko(R) = Rivi loop Close #1 End Sub
Toitsu kirjoitti:
Eikö onnistus helpommin esim. normaali tiedostoon kirjoituksella, "append" ja sitten SEEK:illä vaan riville 1? Sitten poistas rivin 2? Vaan kun en tiedä miten tuon syntaksin sais kohdalleen tuosta seek:istä...
Ei ole mitään eroa normaali- ja tekstitiedostolla. On vain tiedostoja, ja tekstitiedostoista puhutaan vain silloin kun tiedostojen on tarkoitus sisältää tekstiä (usein ASCII-muodossa). Tiedostoissa ei myöskään ole mitään rivejä, joten et voi etsiä sellaisia niistä. Basicin ASCII-muotoinen lataus kuitenkin käsittää Chr(13)+Chr(10) -merkkiyhdistelmän rivinvaihdoksi, ja lopettaa lukemisen siihen. Oikeasti kaikki tiedot ovat vain tavuja tavujen perään, etkä voi minun tietääkseni tallentaa kahden tavun väliin mitään. Eli kannattaa käyttää tuota taulukkoon lukemista.
Onhan tuohon useita ratkaisuja. Ehkä helpoin on lukea tiedosto Input(Lof(F),F)-funktiolla (F = tiedoston avausnumero) tekstiruutuun, jonka MultiLine = True. Sitten muokkaat ekaa riviä tai muitakin miten tykkäät ja tallennat takaisin käskyllä Print #F, Text1. Jos avasit Input-moodissa, on tiedosto ennen tallennusta suljettava ja avattava uudelleen Output-moodissa.
Kiitos. Nyt toimii!
Aihe on jo aika vanha, joten et voi enää vastata siihen.