Memoryblockeihin ei tarvitse tutustua tämän asian hoitamiseksi.
Tarvittaessa pelkkä tavallinen string-muuttuja (tai field) käy taulukosta. Stringiin voi tehdä helposti yksiulotteisen taulukon, joskin myös moniulotteinen taulukko on mahdollista toteuttaa, mutta se on haastavampaa.
Oletetaan, että teemme yksiulotteisen taulukon (listan), jonka kussakin solussa voi olla luku tai merkkijono, jonka suurin sallittu pituus on vaikkapa 10 merkkiä. Soluja tässä taulukossa voisi olla vaikka 20.
Tehkäämme aluksi string-muuttuja, johon asetetaan 20 * 10 jotakin merkkiä, esimekriksi Chr(0). Tämä merkki tarkoittaa tyhjää, jossa ei ole mitään - ei edes välilyöntiä.
Taulukkoon voi asettaa arvon korvaamalla osan tämän muuttujan sisällöstä. Korvattava osa alkaa merkkijonon kohdasta "solu * 10", missä "solu" tarkoittaa haluamaamme solunumeroa (Huom! väliltä 0 - 19! Eli aloitetaan nollasta). Osa päättyy tästä kohdasta kymmenen merkin päähän. Korvaa tämä osa uudella arvolla. Muista, että uuden arvon on oltava täsmälleen yhtä pitkä kuin korvattavan osan, eli siis se kymmenen merkkiä! Jos uusi arvo on tätä lyhyempi, täytetään loppupää tyhjää tarkoittavalla merkillämme (tässä tapauksessa Chr(0))
Koodia:
Code: Select all
'Varataan "taulukko"
taulukko$ = String(Chr(0),20*10)
'Asetetaan arvo
solu = 5
uusiArvo$ = "01234567890"
offset = solu * 10
'Napataan Left:llä ja Mid:llä taulukon "reunat" niin, että korvattava osa jää pois. Liitetään uusi osa näiden "reunojen" väliin.
taulukko = Left(taulukko,offset-1) + uusiArvo + Mid(taulukko,offset+10)
Tästä kannattaa tehdä oma funktionsa, jolle välitetään taulukko-string, solunumero (index) sekä uusi arvo.
Seuraavaksi luemme taulukkoa. Se onkin helpompaa kuin kirjoittaminen.
Code: Select all
offset = solu * 10
luettuArvo$ = Mid(taulukko$,offset,10)
luettuArvo = Replace(luettuArvo,Chr(0),"") 'Poistetaan mahdolliset "tyhjät" merkit
Tästäkin voi tehdä helppokäyttöisemmän funktion.
Tämä on sitten helppo soveltaa tyyppeihin kun stringin voi laittaa fieldiksi. Samoin tällaisia taulukoita voi näppärästi välittää funktioiden parametreina ja paluuarvoina.
Koodeja en ole testannut, mutta testaan ne myöhemmin ja muokkaan tarvittaessa. Voi olla että tuossa taulukkoon kirjoittamisessa on pientä virhettä.
Moniulotteisia taulukkoja en ala käsittelemään, koska en ole sellaisten luomiseen tällä tavalla vielä itsekään kunnolla perehtynyt.