Hakua ja koodivinkkiä koetin, mutta ei toiminut. Eli pitäisi saada tulostettua muuttujan arvona oleva rivi .txt tiedostosta ja tulostettua sen rivin teksti. Antkaa koodipätkää.
Kato jos saisit tuolta apua:
https://www.ohjelmointiputka.net/hak/?kieli=Visual Basic&nimi=InStr
Ei tuo auta, sillä minun pitäisi hakea rivi tiedostosta.
Kyllä täältä siihen löytyy ratkaisu:
Function HaeRivi(rivi, filu) On Error Resume Next 'jos tiedostoa ei ole Open filu For Input As #1 'avataan tiedosto If Err = 53 Then Exit Function 'jos tiedostoa ei ole niin poistutaan Do Until EOF(1) 'luupataan tiedoston loppuun asti r = r + 1 'lisätään rivicountteria yhdellä Line Input #1, teksti 'haetaan yksi rivi tiedostosta If r = rivi Then 'jos ollaan sillä rivillä mikä pitää hakea... HaeRivi = teksti 'niin kerrotaan oikea rivi Close 'ja suletaan tiedosto Exit Function 'ja poistutaan End If Loop 'seuraava rivi... Close 'sule tiedosto. jos tässä kohtaa ollaan niin haettava rivinumero on niin iso ettei sitä ole tiedostossa End Function
eli tuo hakee tietyn rivin tiedostosta.
Löytyy myös koodivinkit -> tiedostot ja hakemistot -> tietyn rivin hakeminen tekstitiedostosta.
No tuossa on se ongelma, että miten tuon rivin pystyy tulostamaan.
Tulostaa tulostimella, vai? Käytä printer-objektia. Tulostus tapahtuu sitten Printer.Print ...
remontti-reiska kirjoitti:
No tuossa on se ongelma, että miten tuon rivin pystyy tulostamaan.
eikös se mene ihan text1.text = text
Kannattaa muuten kokeilla vaikka FSO:ta tuohon tekstin tallennukseen ja hakuun tekstitiedostosta.
https://www.ohjelmointiputka.net/koodivinkit/
remontti-reiska kirjoitti:
Ei tuo auta, sillä minun pitäisi hakea rivi tiedostosta.
Hakea rivi? No sehän onnistuu yksinkertaisesti:
Line Input #1, muuttuja
Tosin en usko, että tässä oli näin yksinkertaisesta asiasta kysymys, eli taisin käsittää jotain väärin.
Eli minulla on tiedosto, jossa on 5245 riviä. Arvon ensin muuttujan arvon ja haluaisin koodia, jolla pystyy hakemaan sen rivin, joka on muuttujan arvona ja asettaa se toiseen muuttujaan. Miten toimin?
Tuomaksen funktiohan tekee sen jo; haet tietyn rivin, ja funktio palauttaa sen rivin sisällön.
Dim muuttuja As String muuttuja = HaeRivi(Int(Rnd * 5245) + 1, "koe.txt")
Tuollainen kutsu sijoittaisi satunnaisen rivin tiedostosta muuttuja-stringiin.
Minä keksin tuohon vain kaksi tapaa.
1. Luet niitä rivejä siitä tiedostosta merkkijonomuuttujaan ja kasvatat joka rivin jälkeen toista muuttujaa yhdellä. Kun tuon muuttujan arvo vastaa haluamasi rivin numeroa, voit lopettaa silmukan, jolloin viimeksi luettu tieto jää merkkijonomuuttujaan.
2. Luet heti ohjelman alussa kaikki rivit merkkijonotaulukkoon, jota sitten varmaan osaatkin helposti käsitellä.
Edit: Mutta tuomaksella on tosiaan tuossa jo valmis funktio tuohon.
Nyt sain tuon toimimaan, mutta vielä on ongelmia. Miten saan etsittyä tiedostosta vain sellaisia rivejä, joissa on jotakin muuta kuin tyhjää?
Dim muuttuja As String muuttuja = HaeRivi(Int(Rnd * 5245) + 1, "koe.txt")
Ja sitten vaan tarkastat onko muuttuja arvo "" eli tyhjä:
If Muuttuja = "" Then muuttuja = HaeRivi(Int(Rnd * 5245) + 1, "koe.txt") End IF
Ja niin edelleen...
Ei se ihan noin kyllä mene, mutta sain tuosta ainakin ja idean ja nyt se toimii.
Aihe on jo aika vanha, joten et voi enää vastata siihen.