Mikä neuvoksi, jokaisesta asiakkaasta pitäisi tallentaa tekstitiedostoon asiakkan nimi, osoite ja id-numero. Pystyn kyllä tallentamaan tiedot tiedostoon esim. "kalle|||katukuja5|||1034", mutta ongelma on siinä kun tiedot pitäisi hakea tiedostosta. Saan haettua jokaisen rivin tiedostosta, mutta ne pitäisi vielä pilkkoa "|||"-merkkijonon kohdalta. Sitten tiedot pitäisi vielä tulostaa näytölle. Split- ja Join-funktioita en voi käyttää, koska käytössäni on Visual Basic 4.0.
No yksi tapa on ainakin For-silmukka ja Mid. merkki kerrallaan eteenpäin, kun tulee |, katsotaan, ovatko seuraavatkin niitä, ja jos ovat, otetaan Mid:llä palanen ja merkitään muistiin, mihin tämä loppuu eli mistä seuraava pala alkaa. Se on purkkatekniikka, tiedän. Joku varmasti keksii jonkin helpomman.
Tähän tehtävään sopii hyvin InStr-funktio, joka ilmoittaa merkkijonon paikan toisessa merkkijonossa. Merkkijonosta luetaan silmukassa aina seuraavan erotinmerkin paikka, ja tiedot saadaan selville Mid-funktiolla. Silmukan päättyessä näytetään vielä viimeisen erotinmerkin jälkeiset tiedot.
Dim tiedot As String Dim kohta As Integer, uusi As Integer tiedot = "eka|||toka|||kolmas|||neljäs" kohta = 1 Do uusi = InStr(kohta, tiedot, "|||") If uusi = 0 Then MsgBox Mid(tiedot, kohta) Exit Do Else MsgBox Mid(tiedot, kohta, uusi - kohta) kohta = uusi + 3 ' 3 = erottimen pituus End If Loop
Yleensäkin jos valmista merkkijonofunktiota tiettyyn tarkoitukseen ei ole, semmoisen voi aina laatia itse.
Miksi et käyttäisi tietueita?
Rippaus Antti Laaksosen Vb-Oppaan 8-Osasta. Pienten muutosten kera:
Type HTiedot Nimi As String Osoite As String IdNumero as Integer End Type 'aliohjelmaan: Dim tiedot As HTiedot tiedot.nimi = "Matti Meikäläinen" tiedot.Osoite = "Koodaajan tie 6" tiedot.IdOsoite = 1200 Open app.path & "tiedosto.dat" For Binary As #1 Put #1, ,tiedot Close #1
Vai onko kaikkien asiakkaitten tiedot samassa teksti-tiedostossa?
On.
tietysti voit käyttää myös ini tiedostoa joka on huomattavasti helpompaa
https://www.ohjelmointiputka.net/keskustelu/1997-ini-tiedostot
Jos ei ole mitään esteitä siirtyä käyttämään oikeaa tietokantaa, niin suosittelen. Tai miksei tuosta nomicin samplesta voisi vain laittaa tietueet taulukkoon?
Aihe on jo aika vanha, joten et voi enää vastata siihen.