Ääkkösten luku?

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ä?
81218
Äänestä

Muut lukivat myös

Vastaukset 8

Vanhimmat

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

Äänestä
  • 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.

    Äänestä

  • 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?

    Äänestä

  • 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...

    Äänestä

  • 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 ;)

    Äänestä

  • 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...

    Äänestä

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.

Äänestä
  • Otsikossa olikin jo kaikki oleellinen... Eli kiitos.

    Äänestä

Kommentoi aloitusta


Typerys... kirjoitti:

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

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu