Eli näitä kumpaakin tarvitsisin. Tuossa värin tunnistuksessa funktiolle pitäisi antaa värin nimi/rgb tai jotain sellaista ( sopii myös että ulkopuolisen bittikartan avulla etitään vastaavuuksia) ja tekstin etsimisestä, tiedän findstring() funktion, mutta koodini pitäisi etsiä koko tekstistä, eikä vain alusta.
Tuossa on merkkijonon etsiminen:
Dim mjono, haku As String
Dim kohta As Integer
mjono = "Kappas kippis!"
haku = "pp"
kohta = 0
Do
kohta = mjono.IndexOf(haku, kohta)
If kohta = -1 Then Exit Do
MsgBox("Löytyi kohdasta " & kohta)
kohta = kohta + 1
LoopMitähän tarkoitat värin tunnistuksella? Mitä funktiolle tarkalleen annetaan parametrina ja mitä sen pitää tarkalleen palauttaa?
Funktiolle annetaan värin arvo ja se palauttaa missä x ja y akselissa se väri esintyy ensimmäisen kerran.
Private Sub Form_Load()
kuva.ForeColor = vbBlack
kuva.PSet (10, 10)
koord = Split(haeväri(0, 0, 0), ".")
MsgBox koord(0) & "-" & koord(1)
End
End Sub
'syötetään rgb:t funktiolle, joka palauttaa stringinä olinpaikan.
Function haeväri(r As Byte, g As Byte, b As Byte) As String
For x = 0 To kuva.Width
For y = 0 To kuva.Height
väri = kuva.Point(x, y) 'otetaan talteen Mordorin keksintö
r2 = väri Mod 256
g2 = (väri \ 256) Mod 256
b2 = väri \ 65536
If r2 = r And g2 = g And b2 = b Then 'löytyi
haeväri = x & "." & y
Exit Function 'poistutaan
End If
Next y
Next x
haeväri = "-1.-1" 'ei löytynyt.
End FunctionOlisikohan tästä apua?
Kai tuosta, vaikka tuo pitääkin modaa vb .netille
Tulee ainkin 3*nopeammaksi jos testaat heti värin tsekkausen jälkeen:
r2 = väri Mod 256
If r2 = r Then
g2 = (väri \ 256) Mod 256
If g2 = g Then
b2 = väri \ 65536
If b2 = b Then
...Aihe on jo aika vanha, joten et voi enää vastata siihen.