Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VBA: VB: Tiedostoon kirjoittaminen

koju [25.11.2003 14:12:56]

#

Vb: Tekstitiedostoon kirjoittaminen

Kuinka voi kirjoittaa kaksiulotteisen taulukon sisällön tekstitiedostoon siten, että se tieto menisi tekstitiedostoon sarake kerrallaan. Tieto pitäisi myös pystyä lukemaan tekstitiedostosta ns. sarake kerrallaan.

sooda [25.11.2003 14:35:11]

#

Jotenkin tähän tyyliin:

sub PistäTiedostoon()

    open "tiedosto.dat" for binary as #1
    put #1,1,taulukko()
    close

end sub

sub NappaaTiedostosta()

    open "tiedosto.dat" for binary as #1
    get #1,1,taulukko()
    close

end sub

sooda [25.11.2003 14:36:34]

#

Humps, kooditagit ei näköjään värjäydy jos ne ei ala isoilla kirjaimilla... höh ihan höpö.

koju [25.11.2003 14:56:03]

#

Tarkennetaan hieman eli taulukko on tämännäköinen:

       sarake1  sarake2  sarake3
rivi1     1        4        7
rivi2     2        5        8
rivi3     3        6        9

taulukosta pitäisi poimia 1 sarake kerrallaan sarakkeen kaikki rivit mukaan ottaen tiedot tekstitiedostoon ja sen jälkeen niitä tietoja pitäisi myös pystyä lukemaan tuolta tekstitiedostos ns. sarake kerrallaan, jolloin sarakkeen tietojen avulla pystyttäisiin tekemään eräs tulostus. Jos poimisin edelläolevasta taulukosta sarakkeen 1 tiedot saisin siis kasaan numerot 1,2 ja 3.

setä [25.11.2003 15:12:39]

#

Onko tuon välttämättä oltava tekstitiedosto ?
Entä kuinka leveä sarake?
Yksinkertaisin tapa on tallentaa tiedosto kirjoittamalla sarakkeet pilkuilla eroteltuina.
Eli Print #1,1,4,7 jne.
Luettaessa on sitten vaan poimittava oikea sarake

Antti Laaksonen [25.11.2003 16:59:58]

#

Tässä on koodi, joka kirjoittaa luvut tiedostoon tiettyä sarakeleveyttä käyttäen.

Dim leveys As Integer, taulu(2, 2) As Integer
Dim i As Integer, j As Integer

'laitetaan tiedot taulukkoon
taulu(0, 0) = 1: taulu(1, 0) = 4: taulu(2, 0) = 7
taulu(0, 1) = 2: taulu(1, 1) = 5: taulu(2, 1) = 8
taulu(0, 2) = 3: taulu(1, 2) = 6: taulu(2, 2) = 9

'laitetaan sarakkeenleveydeksi 10
leveys = 10
Open "c:\omat\testi.txt" For Output As #1
'käydään läpi kaksiulotteinen taulukko
For i = 0 To UBound(taulu)
    For j = 0 To UBound(taulu, 1)
        'tulostetaan luku oikean pituisena (; estää rivinvaihdon)
        Print #1, Left(taulu(i, j) & Space(leveys), leveys);
    Next
    'nyt on rivinvaihdon aika
    Print #1,
Next
Close #1

Jos luvut on tarkoitus myöhemmin lukeakin, ei näin ole mitään järkeä tehdä. Silloin ne kannattaa tulostella pilkkujen avulla peräkkäin tiedostoon. Tällöin ei sarakeleveyteen tosin voi vaikuttaa itse.

'kirjoitus
Dim taulu(2, 2) As Integer
Dim i As Integer, j As Integer

taulu(0, 0) = 1: taulu(1, 0) = 4: taulu(2, 0) = 7
taulu(0, 1) = 2: taulu(1, 1) = 5: taulu(2, 1) = 8
taulu(0, 2) = 3: taulu(1, 2) = 6: taulu(2, 2) = 9

Open "c:\omat\testi.txt" For Output As #1
For i = 0 To UBound(taulu)
    For j = 0 To UBound(taulu, 1)
        Print #1, taulu(i, j),
    Next
    Print #1,
Next
Close #1
'luku
Dim taulu(2, 2) As Integer
Dim i As Integer, j As Integer

Open "c:\omat\testi.txt" For Input As #1
For i = 0 To UBound(taulu)
    For j = 0 To UBound(taulu, 1)
        Input #1, taulu(i, j)
    Next
Next
Close #1

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta