Ääkkösten luku?

Typerys...

Tein tässä ohjelman, mikä lukee txt-tiedostoa, ja tulostaa lukemansa tekstin Labeliin... Toimi muuten ihan kivasti, mutta ääkköset jäivät jonnekin, eli kun siellä tiedostossa luki: "Tämä on tekstiä", niin labeliin tulostuikin vain "Tm on teksti"

Tässä koodi:

Dim FILE_NAME As String = "c:\temp\test.txt"
Dim sr As StreamReader = File.OpenText(FILE_NAME)
Dim line As String
Dim Text As String
Do
line = sr.ReadLine()
Text = Text line
Loop Until line Is Nothing
sr.Close()
Label1.Text = Text

Tämä on sitten äkkiä kasattu testi ohjelma... Minä vaan opettelen perusteita.

Olisiko jossain kohtaa pitänyt määritellä ohjelma käyttämään jotain tiettyä koodisivua tms? Ja jos olisi, niin miten se olisi pitänyt tehdä?

8

940

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • Tommi

      Olisiko tuo tekstitiedosto kenties Unicode-muodossa ? Jos näin on, pitäisi tuo luettu puskuri käyttää jonkin UTF-konversion läpi ennen tulostamista.

      • Typerys...

        Tarkistin asiaa, olen juuri vaihtanut käyttöjärjestelmää, ja XP:n muistio olikin hieman monimutkaisempi kuin edellisissä...

        Tuo txt-tiedosto olikin tallennettu ANSI muotoisena...

        Tallensin tekstitiedoston uudestaan UTF-8 koodauksella ja nyt se toimii...

        En edes ajatellut, että yksinkertaisen txt-tiedoston voisi tallentaa useammalla eri tavalla... Kiitän avustasi.


      • Toinen Typerys
        Typerys... kirjoitti:

        Tarkistin asiaa, olen juuri vaihtanut käyttöjärjestelmää, ja XP:n muistio olikin hieman monimutkaisempi kuin edellisissä...

        Tuo txt-tiedosto olikin tallennettu ANSI muotoisena...

        Tallensin tekstitiedoston uudestaan UTF-8 koodauksella ja nyt se toimii...

        En edes ajatellut, että yksinkertaisen txt-tiedoston voisi tallentaa useammalla eri tavalla... Kiitän avustasi.

        Alle viikon olen itse VB:tä opiskellut, mutta eikö tällä tavalla olisi helpompi lukea tekstitiedostoja?


        Dim luettu As String

        Open "C:\tiedosto.txt" For Input As #1
        Input #1, luettu
        Close #1

        Label1.Caption = luettu


        Jos tämä tyyli ei käy, niin miksei?


      • Typerys...
        Toinen Typerys kirjoitti:

        Alle viikon olen itse VB:tä opiskellut, mutta eikö tällä tavalla olisi helpompi lukea tekstitiedostoja?


        Dim luettu As String

        Open "C:\tiedosto.txt" For Input As #1
        Input #1, luettu
        Close #1

        Label1.Caption = luettu


        Jos tämä tyyli ei käy, niin miksei?

        Toimiiko .NET versiossa?

        Juuri kokeilin, ja heitti vaikka mitä erroreita...


      • Toinen Typerys
        Typerys... kirjoitti:

        Toimiiko .NET versiossa?

        Juuri kokeilin, ja heitti vaikka mitä erroreita...

        .NETistä en tiedä mitään, VB6:lla kun itse ohjelmoin, ja siinäpä onkin vastaus kysymykseeni miksei koodi kelpaa ;)


      • Typerys...
        Toinen Typerys kirjoitti:

        Alle viikon olen itse VB:tä opiskellut, mutta eikö tällä tavalla olisi helpompi lukea tekstitiedostoja?


        Dim luettu As String

        Open "C:\tiedosto.txt" For Input As #1
        Input #1, luettu
        Close #1

        Label1.Caption = luettu


        Jos tämä tyyli ei käy, niin miksei?

        Dim FILE As String
        Dim Luettu As String
        Dim kaikki As String
        FILE = "c:\tiedosto.txt"
        FileOpen(1, FILE, OpenMode.Input)

        Do Until EOF(1)
        Input(1, Luettu)
        kaikki = kaikki Luettu
        Loop

        FileClose(1)
        Label1.Text = kaikki

        Lueskelin vähän input-komennosta, ja sain kasattua tuommoisen version... Tuo toimii .NETissä. Jos nyt jotain sattuu kiinnostamaan... Tosin ilmeisesti tuo taas vaatii sen että tiedoston koodaus on ANSI, eikä UTF-8 kuten tuolla toisella tavalla...


    • -jk-

      Tuonhan voi tehdä vaikkapa näin:
      Imports System.IO

      Dim Sr As StreamReader = New StreamReader("c:\temp\test.txt", System.Text.Encoding.Default)
      Dim line As String
      Dim Text As String
      Do
      line = Sr.ReadLine()
      Text = Text line
      Loop Until Sr.Peek = -1
      Sr.Close()
      Label1.Text = Text

      Parempi käyttää Peekiä kuin Nothingia, koska tyhjä stringi (eli jos on pelkkä rivinvihto) lopettaa tekstitiedoston lukemisen.

      • Typerys...

        Otsikossa olikin jo kaikki oleellinen... Eli kiitos.


    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Ja taas ammuttu kokkolassa

      Kokkolaisilta pitäisi kerätä pois kaikki ampumaset, keittiöveitset ja kaikki mikä vähänkään paukku ja on terävä.
      Kokkola
      35
      4309
    2. Kuinka kauan

      Olet ollut kaivattuusi ihastunut/rakastunut? Tajusitko tunteesi heti, vai syventyivätkö ne hitaasti?
      Ikävä
      115
      1599
    3. Milli-helenalla ongelmia

      Suomen virkavallan kanssa. Eipä ole ihme kun on etsintäkuullutettu jenkkilässäkin. Vähiin käy oleskelupaikat virottarell
      Kotimaiset julkkisjuorut
      248
      1556
    4. Helena Koivu on äiti

      Mitä hyötyä on Mikko Koivulla kohdella LASTENSA äitiä huonosti . Vie lapset tutuista ympyröistä pois . Lasten kodista.
      Kotimaiset julkkisjuorut
      219
      1414
    5. Mitä siellä ABC on tapahtunut

      Tavallista isompi operaatio näkyy olevan kyseessä.
      Alajärvi
      37
      1317
    6. Ja taas kerran hallinto-oikeus että pieleen meni

      Hallinto-oikeus kumosi kunnanhallituksen päätöksen vuokratalojen pääomituksesta. https://sysmad10.oncloudos.com/cgi/DREQ
      Sysmä
      88
      1088
    7. Löydänköhän koskaan

      Sunlaista herkkää tunteellista joka jumaloi mua. Tuskin. Siksi harmittaa että asiat meni näin 🥲
      Ikävä
      132
      1072
    8. Kun näen sinut

      tulen iloiseksi. Tuskin uskallan katsoa sinua, herätät minussa niin paljon tunteita. En tunne sinua hyvin, mutta jotain
      Ikävä
      48
      1062
    9. Purra saksii taas. Hän on mielipuuhassaan.

      Nyt hän leikkaa hyvinvointialueiltamme kymmeniä miljoonia. Sotea romutetaan tylysti. Terveydenhoitoamme kurjistetaan. ht
      Maailman menoa
      267
      1041
    10. Yhdelle miehelle

      Mä kaipaan sua niin paljon. Miksi sä oot tommonen pösilö?
      Ikävä
      63
      1000
    Aihe