Načtení položek ze souboru   otázka

VB.NET, Algoritmy, I/O operace

Dobrý den, mam malý malý problém...

Vytvořil jsem si textový soubor, ve kterém jsou zapsánky data oddělené |

Ukázka:

milovatni|nikoho ja neznám|pozdravuj babicku|
ahoj|nikoho ja neznám|pozdravuj babicku|
milovatni|lolec|pozdravuj babicku|
test|nikoho ja neznám|wow fungujeto|

Chtěl jsem je všechny vložit do listview (1 sloupec v textu, jeden slopec v listview), ale vůbec se mi nezamlouvá kód který jsem si poskládal (Inspisoval jsem se zhttp://vbnet.cz/clanek--72-pracujeme_s_p...

Šel by tedy napsat jinak a lépe?

Kód:

 Dim soubor As New IO.StreamReader("dat.txt")
        While Not soubor.EndOfStream

           
            Dim sb As New System.Text.StringBuilder()
            Dim ch(0) As Char
            Dim retezec As String
            soubor.ReadBlock(ch, 0, 1)
            While ch(0) <> "|"c
                sb.Append(ch(0), 1)
                soubor.ReadBlock(ch, 0, 1)
            End While
            retezec = sb.ToString & Environment.NewLine

           
            Dim polozka1 As String = sb.ToString
            soubor.ReadBlock(ch, 0, 1)  
            While ch(0) <> "|"c 
                sb.Append(ch(0), 1) 
                soubor.ReadBlock(ch, 0, 1)  
            End While

           
            Dim asd As String = retezec.Trim
           
            retezec = retezec & sb.ToString.Substring(asd.Length) & Environment.NewLine
            Dim polozka2 As String = sb.ToString.Substring(asd.Length)

            soubor.ReadBlock(ch, 0, 1)  
            While ch(0) <> "|"c 
                sb.Append(ch(0), 1) 
                soubor.ReadBlock(ch, 0, 1)  
            End While

           
            Dim asdasd As String = retezec.Trim
           
            retezec = retezec & sb.ToString.Substring(asdasd.Length - 2) & Environment.NewLine
            Dim polozka3 As String = sb.ToString.Substring(asdasd.Length - 2)

          
            Dim polozka As New ListViewItem
            polozka.Text = polozka1
            polozka.SubItems.Add(polozka2)
            polozka.SubItems.Add(polozka3)
            ListView1.Items.Add(polozka)

        End While
        soubor.Close()

Neukamenujte mne (vím, že je to hrozně napsané) - jsem začátečník

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Snad nevadí C# zápis...

char[] cSeparators = { '|' };
string[] sResult = retezec.TrimEnd (cSeparators).Split (cSeparators);

V polisResult budou jednotlivé části, které získáte přes index pole.

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

Nevadilo by, kdybych se trochu chytal v C#

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Pokud si nevíte rady s převodem kódu VB.Net to C# a naopak, doporučuji použít Convertor : http://www.developerfusion.com/tools/con...

nahlásit spamnahlásit spam 0 odpovědětodpovědět
Dim cSeparators() As Char
Dim sResult() As String

cSeparators = New Char() {"|"}
sResult = retezec.TrimEnd(cSeparators).Split(cSeparators)

Jednotlivé položky získáte přes sResult(i), kde i je pořadí záznamu.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Děkuji, to jsem potřeboval

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