Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: Koko rivi Textboxista (VB 6.0)

Sivun loppuun

viljami [16.03.2006 12:02:55]

#

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.

BadSource [16.03.2006 13:54:49]

#

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.

viljami [16.03.2006 20:54:27]

#

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.

Megant [16.03.2006 21:54:49]

#

Hae rivi, erota rivi kahdeksi osaksi tuolla split-funktiolla erottimena : . Se palauttaa taulukon, jonka ensimmäinen osa on tuo nimi, ja toinen juttu.

viljami [16.03.2006 22:09:03]

#

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.

Gaxx [16.03.2006 22:17:45]

#

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

Megant [16.03.2006 22:22:02]

#

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.

setä [16.03.2006 22:36:04]

#

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.

viljami [16.03.2006 23:04:53]

#

Jees, nyt vaikuttas siltä että tuo Gaxx:in koodi tekis sen mitä tarttis. Mutta VB heriaa tästä:

While(!eof(1))

Blaze [16.03.2006 23:16:42]

#

VB:ssä (kuten muissakin basiceissa) negaatio-operaattori on Not, ei huutomerkki.

viljami [16.03.2006 23:26:28]

#

Joo. en saa tuota toimimaan mitenkään järkevästi.

.. tai ylensä mitenkään...

BadSource [17.03.2006 07:19:19]

#

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

viljami [18.03.2006 09:31:59]

#

Joo nyt sain ton pelaamaan... Kiitän.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta