Jos mulla on textboxissa tekstiä ja yhdellä rivillä on "<tomatoes>85|85|85|85|85|85|85|85|33|33|33</
En ole nyt ihan varma, että mitä hait, mutta tässä pieni esimerkki:
Private Sub Form_Load() Dim stringi As String 'tarvittavat muuttujat Dim luku As Byte, aloitus As Integer, lopetus As Integer Dim määrä As Byte luku = 85 'mitä lukua etsitään määrä = 0 stringi = "<tomatoes>85|85|85|85|85|85|85|85|33|33|33</tomatoes>" 'teksti, josta revitään tieto irti aloitus = InStr(stringi, ">") 'otetaan selville aloitus lopetus = InStr(stringi, "</")'...ja lopetus. stri = Split(Mid(stringi, aloitus, lopetus - aloitus), "|") 'otetaan tekstistä tarvittava siivu ja tehdään siitä taulu For i = 0 To UBound(stri) 'käydään äsköinen taulu läpi forrilla. If stri(i) = luku Then 'jos luku on se, jota me haettiin, niin sitten: määrä = määrä + 1 MsgBox "OU MAI KAAD! MÄÄRÄ ON " & määrä & ". !!1" End If Next i End Sub
Tolla jäi eka luku välistä.
Sain nyt InStr:llä että se ottaa tekstin joka on > ja </ merkkien välissä, mutta vielä pitäis saada että vaikka tulee msgbox jos siellä välissä on jossain luku 89.
Eipä ole tällä koneella VB:tä, niin en voi tarkistaa. Mutta tossa luulisi olevan tarpeeksi jo vinkkiä siihen, mitä ikinä sitten haetkin... Harvemmin annetaan kaikki valmiina, hopeatarjottimella. ;)
Entäs jos mulla on TextBoxissa luvut "70,23,53,15,53" tjsp. Haluaisin että ohjelma laittaa ensimmäisen noista luvuista TextBox ykköseen ja toisen textbox kakkoseen jne.
Miten? =)
Apunasi funktiot Split (erottimena nyt ",") ja kontrollitaulukko. Sekä for-silmukka.
Mutta kun oon niin p*ska etten tajua enkä osaa. Mun projekti jää pahasti kesken jos en pysty tuota tekemään.
Dim jutut As String Dim eka As String Dim toinen As String Dim Kolmas As String Dim Neljäs As String Private Sub Form_Load() jutut = "50|30|60|30" Erottele End Sub Private Sub Erottele() Tähän haluaisin että ohjelma laittaa "eka":n arvoksi luvun joka on "jutut":ssa ensimmäisenä eli "50" ja "toka": arvoksi luvun joka on "jutut":ssa toisena eli "30" jne. End Sub
https://www.ohjelmointiputka.net/hak/?kieli=Visual Basic&nimi=Split siitäpä niin hävyttömän suora esimerkki, notta.
JussiR kirjoitti:
Private Sub Erottele() Tähän haluaisin että ohjelma laittaa "eka":n arvoksi luvun joka on "jutut":ssa ensimmäisenä eli "50" ja "toka": arvoksi luvun joka on "jutut":ssa toisena eli "30" jne. End Sub
Ei sitä noin kannata tehdä. Näin pitäisi onnistua:
Dim luvut() as Integer Dim jutut as String Private Sub Erottele() jutut = "123|321|12|34" luvut = Split(jutut, "|") msgbox luvut(LBound(luvut) + 1) 'Tulostaisi toisena olevan eli 321 End Sub
Ei ole VB:tä koneella niin ei oo tietoo toimiiko.
EDIT: Hidas :<
Tulee type mismatch kohdasta "luvut = Split(jutut, "|")"
Edit: Laitoin Dim luvut() As Integer -> Dim luvut() As String ja toimii.
Yks kysmys vielä. Miksiköhän tätä nappia painamalla ei tapahdu mitään?
Private Sub Korjaaja_Click() With Korjaaja If Korjaaja.Caption = "Käynnistä sadon korjaaja" Then Korjuu = True Korjaus Log "Sadon korjaaja käynnistetty." .Caption = "Sulje sadon korjaaja" Exit Sub Else .Caption = "Käynnistä sadon korjaaja" Log "Sadon korjaaja suljettu." Korjuu = False End If End With End Sub
Edit vaikka laittaisin minkä napin tekemään tuota niin ei tapahdu mitään. Miksi??
Kokeile tätä
Private Sub Korjaaja_Click() If korjaaja.caption = "Käynnistä sadon korjaaja" then Korjaaja.caption = "Sulje sadon korjaaja" Log "Sadon korjaaja käynnistetty." Korjuu = True Korjaus Else Korjaaja.caption ="Käynnistä sadon korjaaja" then Log "Sadon korjaaja suljettu" Korjuu = False endif
Joo tajusin äsken :D
Aihe on jo aika vanha, joten et voi enää vastata siihen.