Ää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

857

    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. Ensitreffit Jenni laukoo viinilasin ääressä suorat sanat Jyrkin aikeista: "Mä sanoin, että älä"

      Voi ei… Mitä luulet: kestääkö Jennin ja Jyrkin avioliitto vai päättyykö eroon? Lue lisää: https://www.suomi24.fi/viihde
      Ensitreffit alttarilla
      27
      2900
    2. Ymmärrän paremmin kuin koskaan

      Roikut kädessäni ja vedät puoleesi. Näen kuitenkin tämän kaiken lävitse ja kaikkien takia minun on tehtävä tämä. Päästän
      Tunteet
      33
      2545
    3. Mitä ajattelit ensimmäisenä kaivatustasi

      kun näit hänet?
      Ikävä
      148
      2274
    4. Hullu liikenteessä?

      Mikä hullu pyörii kylillä jos jahti päällä? Näitä tosin kyllä riittää tällä kylällä.
      Kiuruvesi
      54
      2249
    5. Niina Lahtinen uudessa elämäntilanteessa - Kotiolot ovat muuttuneet merkittävästi: "Nyt on...!"

      Niina, tanssejasi on riemukasta seurata, iso kiitos! Lue Niinan haastattelu: https://www.suomi24.fi/viihde/niina-lahti
      Suomalaiset julkkikset
      24
      1870
    6. Kun Venäjä on tasannut tilit Ukrainan kanssa, onko Suomi seuraava?

      Mitä mieltä olette, onko Suomi seuraava, jonka kanssa Venäjä tasaa tilit? Ja voisiko sitä mitenkään estää? Esimerkiks
      NATO
      391
      1706
    7. Ano Turtiainen saa syytteet kansankiihoituksesta

      Syytteitä on kolme ja niissä on kyse kirjoituksista, jotka hän on kansanedustaja-aikanaan julkaissut Twitter-tilillään
      Maailman menoa
      104
      1652
    8. Pyhäinpäivän aamua

      Oikein hyvää huomenta ja rauhallista päivää. ❄️😊🥱☕❤️
      Ikävä
      311
      1561
    9. Kunta ostaa kivitipun

      Kunnanjohtajan tuleva uusi ostokohde
      Lappajärvi
      135
      1459
    10. Varokaa! Lunta voi sataa kohta!

      Vakava säävaroitus Lumisadevaroitus Satakunta, Uusimaa, Etelä-Karjala, Keski-Suomi, Etelä-Savo, Etelä-Pohjanmaa, Pohjanm
      Maailman menoa
      13
      1446
    Aihe