Čtení z txt - řádek po řádku...   zodpovězená otázka

VB.NET

Dobrý den,

jsem ve VB začátečník, potřeboval bych poradit, jak udělat program, který z textového souboru načte řádek a přiřadí ho 1 proměnné - příklad:

Dim radek1 As String = "(1. řádek textu)

Dim radek2 As String = "(2. řádek textu)

...

Udělal jsem tento script pomocí internetu:

Dim CelýText As String = "", ŘádekTextu As String = ""
        OpenFileDialog1.Filter = "Šifry (*.TXT)|*.TXT"
        OpenFileDialog1.ShowDialog()
        If OpenFileDialog1.FileName <> "" Then
            Try
                FileOpen(1, OpenFileDialog1.FileName, OpenMode.Input)
                Do Until EOF(1)
                    ŘádekTextu = LineInput(1)
                    CelýText = CelýText & ŘádekTextu & vbCrLf
                Loop
                sifra.Text = CelýText
                ZavřítToolStripMenuItem.Enabled = True
                OtevřítToolStripMenuItem.Enabled = False
            Catch
                MsgBox("Chyba při otevírání souboru.")
            Finally
                FileClose(1)
                MsgBox("Šifra načtena!")
                Button1.Visible = True
            End Try
        End If

Prosím Vás, potřeboval bych, aby program zjistil počet řádků v textu a tím vytvořil i příslušný počet proměnných.

Děkuji

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Váš způsob čtení souboru je spíše z VB 6. Pokud chcete programovat v VB.NET, použijte System.IO. Dostat řádky do jednotlivých proměnných také není nejlepší způsob, použijte pole. Nejdříve importujte do souboru prostor System.IO:

Imports System.IO

Poté do načítací procedury vložte tento kód:

Dim dlg As New OpenFileDialog()
Dim radky As String()
Dim txt As String = ""

With dlg
    'nastavíme dialog
    .Filter = "Šifry (*.txt)|*.txt"
    .MultiSelect = False

    If .ShowDialog(Me) = System.Windows.Forms.DialogResult.OK Then 'Pokud dialog nikdo nestornoval, otevřeme soubor
        Try
            Dim r As StreamReader = File.OpenText(.FileName)
            txt = r.ReadToEnd() 'vložíme obsah do proměnné txt
            r.Close() 'ukončíme čtení
        Catch ex As Exception : MsgBox("Chyba při načítání")
        End Try

        'rozdělíme txt po řádku (pokud v ní je jen jeden řádek, nic se nestane)
        radky = txt.Split(ControlChars.NewLine)
        MsgBox("Šifra načtena")
    Else : MsgBox("Vyberte šifru")
    End If
End With

Nyní se do proměnné txt dostane obsah souboru a do pole radky dostanou všechny řádky v souboru - ty potom můžete projet pomocí výrazu For Each:

For Each r As String In radky
    ...
Next r

Toto je podle mě nejlepší způsob, jak v .NET otevřít soubor.

nahlásit spamnahlásit spam 0 / 2 odpovědětodpovědět

Pokud chcete načítat řádky, použil bych příkaz:

System.IO.File.ReadAllLines(soubor)

Ten rovnou načte řádky do polí a zbavíte se toho odpudivého kroku načtení celého souboru do jedné řetězcové proměnné. ReadAllLines čte soubor postupně.

Ale to není nic proti tazatelově konstrukci:

CelýText = CelýText & ŘádekTextu & vbCrLf

O rychlostních problémech řetězců a jejich skládání v .NET se hovořilo u nespočetněkrát. Použijte místo toho nesrovnatelně rychlejší StringBuilder:

Dim CelýText As New StringBuilder()
...
CelýText.AppendLine(CelýText)
...
Dim Výsledek As String = CelýText.ToString()
nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback