Mulla nyt olis sellanen ongelma että mulla tietty softa kirjoittelee fileä. Sitä luetaan text1.text:iin Niin että Rivin alussa lukee käyttäjän nimi esim. Sulevi ja perässä tietty parskujono, jonka pituus voi olla kaikkea 1 ja 1000 merkin välimailla. Ja jokaisen parskujonon perässä on VbCrLf, eli rivinvaihto.
Eli textiruutu näyttää tältä.
Sulevi:E39961FF
Suelei:0000
Silave:W34AGGH455D/WKLSSAFG
Nyt pitäs sada koodin pätkä joka hakee tietyn nimen, Esim Sulevi, ja jokaisen merkin sen perästä rivinvaihtoon asti. Eli käyttäjänimen perusteella voitas hakea koko parametri rivi.
Haku IntStr tjsp on, mutta se hakee jostain tietystä merkkijonosta jonkun toisen merkkijonon.
Miten tiedostossa erotetaan käyttäjän tiedot muusta?
* Lue koko tiedosto merkkijonomuuttujaan.
* Pilko tiedostosta rivit esiin Splitillä rivinvaihtojen kohdalta.
Dim Splitti As Variant Dim KokoRoska As String Dim i As Integer '...Luetaan tiedoston data KokoRoska-muuttujaan Splitti = Split(KokoRoska, vbCrLf) For i = Lbound(Splitti) To Ubound(Splitti) Debug.Print Splitti(i) Next i
* Rivin pilkkominen riippuu miten käyttäjä erotetaan muusta datasta.
Hmm. Minäpä selitän uudelleen...
Eli kun mulla on tiedostossa param.txt rivit juuri näin
Sulevi:E39961FF
Suelei:0000
Silave:W34AGGH455D/WKLSSAFG
Se luetaan yhteen text boxsiin, koska käyttäjänkin pitää nähdä tiedoston sisältö.
text boxsissa texti näyttää aivan samalta
Sulevi:E39961FF
Suelei:0000
Silave:W34AGGH455D/WKLSSAFG
Nyt pitää saada periaatteessa haku ohjelma, niin että haetaan nimen perusteella jonkun tietyn käyttäjän data.
Eli kun Sulevi tarvii omaa dataa, etsitään tällä softalla sulevin parskujono, E39961FF. Ja sen mukaan settaillaan softaa.
Hae rivi, erota rivi kahdeksi osaksi tuolla split-funktiolla erottimena : . Se palauttaa taulukon, jonka ensimmäinen osa on tuo nimi, ja toinen juttu.
Noniin, eli enää ei ole kuin itse pää ongelma. :) Eli se rivin haku. voinko hakea koko rivin jossa lukee sulevi.
Tuon splittauksen olen jo korvannut periaatteessa noilla leikkaus funktioilla Right$, left$, mid$, koska samalla olen leikellyt parametri riviäkin...
Eli viellä haku on ongelmana.
Luet rivin kerrallaan ja sitten katot Left:llä, onko ko. rivi haetun käyttäjän rivi. Tähän tapaan:
While(!eof(1)) 'Loopataan kunnes tiedosto loppuu Line Input #1, rivi 'Ja tässä tarkistat rivin Left:llä ja breikkaat Wend
Käyt kaikki rivit läpi, ja katsot instr:llä onko siellä sitä, tai jos haluat että ohjelma on täsmällinen, katsot onko jokin muuttuja sama kuin rivillä oleva nimi.
Tekisin tuon itse niin, että luen TextBoxin sisällön rivi kerrallaan, erotan nimen ja tallennan listBoxiin, jossa aakkosjärjestys. ListBoxin itemdataan sijoitan parskujonon alkukohdan. Tämän jälkeen on helppo valita Listboxista nimi ja ohjelma hakee Itemdatan ja rivinvaihtomerkin välistä parskujonon.
Jees, nyt vaikuttas siltä että tuo Gaxx:in koodi tekis sen mitä tarttis. Mutta VB heriaa tästä:
While(!eof(1))
VB:ssä (kuten muissakin basiceissa) negaatio-operaattori on Not, ei huutomerkki.
Joo. en saa tuota toimimaan mitenkään järkevästi.
.. tai ylensä mitenkään...
Perjantain kunniaksi valmista koodia.
Dim Splitti() As String Dim Rivi() As String Dim KokoRoska As String Dim Tiedosto As String Dim i As Integer Tiedosto = App.Path & "\Parametrit.txt" If Dir(Tiedosto) <> "" Then 'tarkistetaan onko kyseistä tiedostoa Open Tiedosto For Input As #1 'avataan tiedosto lukemista varten KokoRoska = Input(LOF(1), 1) 'luetaan kerralla koko sisältö muuttujaan Close #1 Splitti = Split(KokoRoska, vbCrLf) 'selvitetään rivit 'LBound palauttaa ensimmäisen solun taulukossa ja UBound viimeisen For i = LBound(Splitti) To UBound(Splitti) 'käydään rivit läpi Rivi = Split(Splitti(i), ":") 'erotetaan riviltä käyttäjä ja parametrit If UBound(Rivi) = 1 Then 'tarkistetaan, että rivillä oli : erottamassa arvoja Debug.Print "Käyttäjä: " & Rivi(0) Debug.Print Rivi(0) & "n parametrit: " & Rivi(1) End If Next i End If
Joo nyt sain ton pelaamaan... Kiitän.
Aihe on jo aika vanha, joten et voi enää vastata siihen.