Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: Sisältää?

Sivun loppuun

DaZip [28.01.2004 18:54:08]

#

Joo... Mitenkäs saisin otettua tekstipoksista tietoa niin että se ei ota kaikkea sieltä... Eli ei esim.

if text1 = "lol"

Vaan niin että jos se teksti sisältää ton "lol"? Tajusikohan tota nyt kukaan...

Antti Laaksonen [28.01.2004 19:18:31]

#

InStr-funktiolla selviää tekstin sijainti merkkijonossa, ja Left- sekä Mid-funktioilla tekstistä saa karsittua osia. Tässä esimerkissä tekstistä poistetaan osa:

Dim teksti As String, pois As String
Dim kohta As Integer, pituus As Integer

'koko teksti
teksti = "Ohjelmointitämäpitääpoistaaputka"
'poistettava osa
pois = "tämäpitääpoistaa"
'poistettavan osan sijainti tekstissä
kohta = InStr(teksti, pois)
'poistettavan osan pituus
pituus = Len(pois)
'jos poistettava osa on tekstissä...
If kohta <> 0 Then
    '...muodostetaan uusi merkkijono ilman sitä
    teksti = Left(teksti, kohta - 1) & Mid(teksti, kohta + pituus)
End If

MsgBox teksti

Tässä on edelleen kehitetty koodinpätkä, joka poistaa tekstistä kaikki poistettavan sanan esiintymät eikä pelkästään ensimmäistä:

Dim teksti As String, pois As String
Dim kohta As Integer, pituus As Integer

teksti = "Ohjelmpoisointpoisiputka"
pois = "pois"
kohta = InStr(teksti, pois)
pituus = Len(pois)
While kohta <> 0
    teksti = Left(teksti, kohta - 1) & Mid(teksti, kohta + pituus)
    kohta = InStr(teksti, pois)
Wend

MsgBox teksti

Lisää tietoa:
http://vb.ohjelmointiputka.net/?InStr
http://vb.ohjelmointiputka.net/?Left
http://vb.ohjelmointiputka.net/?Mid

DaZip [28.01.2004 19:27:33]

#

Anteeksi huono kymysys... Tarkoitin että kun mulla on tekstipoksi jossa lukee vaikka "kelkkasuksimörkö" tai "kelkka + suksi + mörkö" tai mitä vaan... Niin miten saan esim. ehtolauseeseen sen niin että saan vaikkas pistelaskuriin lisättyä pisteen möröstä ja 2 kelkasta ja 3 suksesta... Tajusitteko yhteyden. Osaan kyllä sen piste homman tehdä mutta toi että miten sitä tulee tosta keskeltä tekstiä, onkin hankalampi.

kenkku [28.01.2004 19:32:42]

#

if InStr("mörkö", etsittava) then pisteet = pisteet + 1
if InStr("kelkka", etsittava) then pisteet = pisteet + 2

Tollee?

DaZip [28.01.2004 19:33:48]

#

No danke! Pitääs kokeilla toimiiko...

DaZip [28.01.2004 21:16:37]

#

No nyt tolla toimii... Mutta ja iso mutta onkin. Se ei anna pisteita kun sillon jos tekstipoksi sisältää pelkästään jonkun noista... Esim. "mörkö" tjsp... Eli miten saisin sen antamaan niitä pisteitä jokaisesta niistä esim jos siinä on "mörkö + mörkö + pekka"?

setä [28.01.2004 21:32:43]

#

I = 1
Do Until I = 0
    I = InStr(I, "mörkö + mörkö + pekka", "mörkö")
    If I then
      pisteet = pisteet + 1
      I = I + len("mörkö")
    end if
Loop

DaZip [28.01.2004 21:36:07]

#

Viittitkö pikkusen selittää mitä tossa tapahtuu kun olen hieman amatööri... Meinaan vaan että helpompi sit soveltaa... Niin ja kiitos!

setä [28.01.2004 21:44:48]

#

InStr-funktion ekaparametri I määrää kohdan, josta haku aloitetaan. Eka kerralla I = 1 ja löytyy se ensimmäinen mörkö. Tämän jälkeen aloitetaan haku kohdasta 1 + 5 = 6, jolloin löytyy se toinen mörkö.

DaZip [28.01.2004 23:33:05]

#

Siis ei toimi vieläkään... Ei mulla hyvin mee

setä [29.01.2004 00:01:38]

#

Miksei muka toimi. Kopsaapa tohon vähän koodia.

DaZip [29.01.2004 15:53:07]

#

Siis sen pitäs toimia niin, että vaikka siinä kentässä lukis mitä ni se poimii jokikisestä "mörkö" sanasta pisteen...

setä [29.01.2004 16:11:38]

#

No juuri niinhän se toimiikin. Laita "mörkö + mörkö + pekka" tilalle se mitä hyvänsä ja sanan "mörkö" tilalle se mistä pisteitä annetaan niin se hakee ne kaikki.

DaZip [29.01.2004 16:21:10]

#

No perhana, sori. Ymmärsin ihan väärin... Kiitos vaivasta!

DaZip [29.01.2004 16:28:10]

#

Noh eipäs se sittenkään toiminunna...

I = 1
Do Until I = 0
   I = InStr(I, "Text1.text", "kickflip")
   If I Then
     Text2 = Str(Val(Text2) + 1)
     I = I + Len("kickflip")
   End If
Loop

Noin mä sen laitoin mutta mitään ei tapahdu. Missä vika?

DaZip [29.01.2004 18:59:13]

#

Toimii


Sivun alkuun

Vastaus

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

Tietoa sivustosta