Alun osaan mutta ....

Olen tekemässä ohjelmaa joka käy rivit läpi etsii joka riviltä samat numerot tässä tapauksessa.

Miten teen sen silleen että se avaa tiedoston esim. c:\numerot.txt ja käy rivi riviltä läpi numerot. esim. rivit:

0102030405
0203040506
0304050607

Ja näistä etsii esim. 03 numeroa.

Tein alun mutta en päässy puusta pitkälle:    
*/ ------------------------------
For I = 1 to 5
If Mid$(WinNum, i, 1) = Mid$(MyNum, i, 1) Then
strmatch = strmatch & Mid$(WinNum, i, 1)
End If
Next I
Matches = Len(strMatch)

Miten tästä edetä?
121010
Äänestä

Muut lukivat myös

Vastaukset 12

Vanhimmat

kuinka yksinkertainen ja helppo.
Esimerkissä etsitään siis "03" merkkijonoa, jos se löytyy riviltä, rivi tulostetaan.

Open App.Path & "\numerot.txt" For Input As #1

Do While Not EOF(1)
Line Input #1, rivi
If InStr(1, rivi, "03", vbTextCompare) Then Print rivi

Loop

Close #1

Äänestä
  • Tuo App.Path on ohjelman oletushakemisto, siis mistä se ohjelma käynnistetään, tuo numerot.txt tulee olla siinä hakemistossa.
    Voit kirjoittaa luonnollisesti koko polun, vaikka "C:\numerot.txt" tai missä se sitten onkaan.

    Äänestä

  • jokuvaan kirjoitti:

    Tuo App.Path on ohjelman oletushakemisto, siis mistä se ohjelma käynnistetään, tuo numerot.txt tulee olla siinä hakemistossa.
    Voit kirjoittaa luonnollisesti koko polun, vaikka "C:\numerot.txt" tai missä se sitten onkaan.

    Miten haetaan kahta numeroa tekstistä esim. 03 lisäksi numeroa "15"??

    Äänestä

  • Miten voi formiin määritellä esimerkiksi kolme lukua joita etsitään. esim. 02, 05 ja 29??

    Siis nämä luvut haluaisin itse määrätä?

    Äänestä

  • pulassa kirjoitti:

    Miten voi formiin määritellä esimerkiksi kolme lukua joita etsitään. esim. 02, 05 ja 29??

    Siis nämä luvut haluaisin itse määrätä?

    Lisäämällä Form1 kolme Text-kehystä
    kirjoittamalla niihin haettavat merkkijonot.
    Jos jokin noista ehdoista toteutuu, rivi tulostuu.

    If InStr(1, rivi, Text1.Text, vbTextCompare) Then Print rivi
    If InStr(1, rivi, Text2.Text, vbTextCompare) Then Print rivi
    If InStr(1, rivi, Text3.Text, vbTextCompare) Then Print rivi

    Äänestä

  • jokuvaan kirjoitti:

    Lisäämällä Form1 kolme Text-kehystä
    kirjoittamalla niihin haettavat merkkijonot.
    Jos jokin noista ehdoista toteutuu, rivi tulostuu.

    If InStr(1, rivi, Text1.Text, vbTextCompare) Then Print rivi
    If InStr(1, rivi, Text2.Text, vbTextCompare) Then Print rivi
    If InStr(1, rivi, Text3.Text, vbTextCompare) Then Print rivi

    Ei toimi toi antamasi ehdotus.
    en ainakaan minä sitä saa toimimaan..

    Äänestä

  • Pulassa kirjoitti:

    Ei toimi toi antamasi ehdotus.
    en ainakaan minä sitä saa toimimaan..

    Lisäys edelliseen... kaikki kolme lukua pitäisi olla kerrallaan haku ehtoina. Ei siis yksitelle vaan kaikki esim. 02,03,05

    Äänestä

  • pulasa kirjoitti:

    Lisäys edelliseen... kaikki kolme lukua pitäisi olla kerrallaan haku ehtoina. Ei siis yksitelle vaan kaikki esim. 02,03,05

    laita ehdot peräkkäin, eli jokaisen ehdon pitää toteutua:

    If InStr(1, rivi, Text1.Text, vbTextCompare) Then
    If InStr(1, rivi, Text2.Text, vbTextCompare) Then
    If InStr(1, rivi, Text3.Text, vbTextCompare) Then Print rivi
    End If
    End If

    Äänestä

  • jokuvaan kirjoitti:

    laita ehdot peräkkäin, eli jokaisen ehdon pitää toteutua:

    If InStr(1, rivi, Text1.Text, vbTextCompare) Then
    If InStr(1, rivi, Text2.Text, vbTextCompare) Then
    If InStr(1, rivi, Text3.Text, vbTextCompare) Then Print rivi
    End If
    End If

    Ei toimi toi lauseesi siinä aiemmassa. Kirjoita toimiva coodi

    Äänestä

  • Pulassa kirjoitti:

    Ei toimi toi lauseesi siinä aiemmassa. Kirjoita toimiva coodi

    Siis, tee tekstitiedosto numerot.txt
    ja tallenna se johonkin.
    Tässä esimerkissä "C:\hakemisto\polku\"
    Tee kolme Text-kehystä, Text1, Text2 ja Text3.
    ja jos laitat Text1 "01", Text2 "02", Text3 "03"
    ja jos kirjoitit tuohon tiedostoon vaikka rivin "01342025903", josta siis löytyy kaikki Text-kehyksissä syöttämäsi arvot, niin kyllä tulostuu näytölle. Ja ei niiden tarvitse olla tuossa järjestyksessä, kunhan vaan kaikki annetut merkkojonot löytyvät riviltä.

    Open "C:\hakemisto\polku\numerot.txt" For Input As #1

    Do While Not EOF(1)
    Line Input #1, rivi
    If InStr(1, rivi, Text1.Text, vbTextCompare) Then
    If InStr(1, rivi, Text2.Text, vbTextCompare) Then
    If InStr(1, rivi, Text3.Text, vbTextCompare) Then Print rivi
    End If
    End If

    Loop

    Close #1

    Äänestä

  • jokuvaan kirjoitti:

    Siis, tee tekstitiedosto numerot.txt
    ja tallenna se johonkin.
    Tässä esimerkissä "C:\hakemisto\polku\"
    Tee kolme Text-kehystä, Text1, Text2 ja Text3.
    ja jos laitat Text1 "01", Text2 "02", Text3 "03"
    ja jos kirjoitit tuohon tiedostoon vaikka rivin "01342025903", josta siis löytyy kaikki Text-kehyksissä syöttämäsi arvot, niin kyllä tulostuu näytölle. Ja ei niiden tarvitse olla tuossa järjestyksessä, kunhan vaan kaikki annetut merkkojonot löytyvät riviltä.

    Open "C:\hakemisto\polku\numerot.txt" For Input As #1

    Do While Not EOF(1)
    Line Input #1, rivi
    If InStr(1, rivi, Text1.Text, vbTextCompare) Then
    If InStr(1, rivi, Text2.Text, vbTextCompare) Then
    If InStr(1, rivi, Text3.Text, vbTextCompare) Then Print rivi
    End If
    End If

    Loop

    Close #1

    Eiks toi toimis lyhyemmin:

    If (tosi) And (tosi) And (tosi) Then PrintLine

    ei tarvis kuin yhden Iffin :)

    Äänestä

  • Basillius kirjoitti:

    Eiks toi toimis lyhyemmin:

    If (tosi) And (tosi) And (tosi) Then PrintLine

    ei tarvis kuin yhden Iffin :)

    olen tuota ehtolausetta kokeillut mutta ei se tee haluttua toimintoa. Eli toisin sanoen ei toimi vaikka pitäisi.

    Äänestä

Kommentoi aloitusta


YksinPulassa...Neuvoton kirjoitti:

Olen tekemässä ohjelmaa joka käy rivit läpi etsii joka riviltä samat numerot tässä tapauksessa.

Miten teen sen silleen että se avaa tiedoston esim. c:\numerot.txt ja käy rivi riviltä läpi numerot. esim. rivit:

0102030405
0203040506
0304050607

Ja näistä etsii esim. 03 numeroa.

Tein alun mutta en päässy puusta pitkälle:    
*/ ------------------------------
For I = 1 to 5
If Mid$(WinNum, i, 1) = Mid$(MyNum, i, 1) Then
strmatch = strmatch & Mid$(WinNum, i, 1)
End If
Next I
Matches = Len(strMatch)

Miten tästä edetä?

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu