StreamReader a načítání hodnot z txt souboru do proměnných   zodpovězená otázka

VB.NET, I/O operace

Dobrý den,

potřebovala bych poradit s řešením následujícího případu, který se částečně odvíjí od řešení zmiňovaného v Seriálu VB.NET od začátku - Díl 8.

Mám textový soubor, ve kterém jsou uvedena metadata k existujícím souborům. Těmi "metadaty" myslím 1. název souboru, 2. místo uložení souboru, 3. místo uložení obrázku, který reprezentuje daný soubor a 4. komentář(popis souboru).

Potřebovala bych, aby se mi po kliknutí na záznam v listboxu vrátila hodnota pro místo uložení souboru, místo uložení obrázku a popisek (vycucnout informaci z texťáku a uložit do nějaké proměnné, se kterou budu dál pracovat).

První fázi - zveřejnění záznamů v listboxu - jsem zvládla, teď bych se potřebovala prokousat ostatními záznamy v txt.

Sama bych na to přicházela asi dost dlouho a tak prosím odborníky o radu :) Děkuji předem.

Tu je zvládnutáí část (načtení položek do seznamu):

 While Not GraphicDatabase.EndOfStream
            Dim name As String = GraphicDatabase.ReadLine() 'name of graphic feature
            Dim file As String = GraphicDatabase.ReadLine() '*.mdb/feature
            Dim picture As String = GraphicDatabase.ReadLine()  '*.png
            Dim comment As String = GraphicDatabase.ReadLine()  'comment for graphic feature
            Dim freespace As String = GraphicDatabase.ReadLine() ' free space, just for readibility

            lb3Dgraphic.Items.Add(name) 'listbox
        End While

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

Co je to za textový soubor? Je to formát CSV? Bez znalosti formátu textového souboru vám těžko někdo poradí.

nahlásit spamnahlásit spam -3 / 3 odpovědětodpovědět

Je to .txt, struktura je takova, ze kazde informaci nalezi jeden radek (okopirovane reseni z vyse uvedeneho vyukoveho serialu).

Vypada to asi nejak takhle:

Tree trunk

pahyl2.mdb\jenpahyl

pahyl2.png

Toto je strom bez listi, ma vysku asi 6m, je hnedy.

Tree with leafs

tree2.mdb\tree

tree2.png

Toto je strom s listim, ma vysku asi 6m, je hnedy.

atd...

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

Dobrý večer

p. Linhart prosím Vás ak máte trochu času či by ste mi nepomohol

s problémom "Pohyb po DataGridView". Mám DGV o troch stĺpcoch

"názov","počet","ks". Názvy mám naplnené a chcem zadávať počet a ks. Neviem zachytiť po zadaní hodnoty a stlačení "ENTER" túto udalosť. Stále mi to skáče na nový riadok. Vjednom príspevku ste sa vyjadril že je nutné zmeniť túto vlastnosť neviem ju nájsť. Ak máte chvíľku čas tak Vás prosím o odpoveď.

ďakujem

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

Aspoň ste vyskúšali kód, ktorý som Vám napísal vo Vašom príspevku?

nahlásit spamnahlásit spam 0 odpovědětodpovědět
Imports System.IO
Public Class Form1
  'Definice struktury
  Structure Tree
    Public Name As String
    Public Path As String
    Public Image As String
    Public Description As String
    Public Overrides Function ToString() As String
      'Nutné pro správné zobrazení v ListBoxu pomocí data bindingu
      Return Name
    End Function
  End Structure
  'Definice seznamu
  Private _trees As List(Of Tree)
  Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    _trees = New List(Of Tree)
    'Načtení dat ze souboru do seznamu (použít platnou cestu!)
    Using reader As New StreamReader("C:\Trees.txt")
      While Not reader.EndOfStream
        Dim t As New Tree
        With reader
          t.Name = .ReadLine()
          t.Path = .ReadLine()
          t.Image = .ReadLine()
          t.Description = .ReadLine()
          'Vynechání prázdného řádku
          .ReadLine()
        End With
        'Přidání záznamu do seznamu
        _trees.Add(t)
      End While
    End Using
    'Přiřazení seznamu jako zdroj dat pro ListBox (data binding)
    ListBox1.DataSource = _trees
  End Sub
  Private Sub ListBox1_SelectedValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedValueChanged
    Dim selectedValue = ListBox1.SelectedValue
    'Konverze vybrané hodnoty v ListBoxu na odpovídající strukturu
    If selectedValue IsNot Nothing Then
      Dim t = DirectCast(selectedValue, Tree)
      'Zobrazení vlastností struktury
      MessageBox.Show(t.Name & ":" & vbCrLf & t.Description)
    End If
  End Sub
End Class
nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Děkuji na 100 1000x. To je přesně ono. Sama bych na to přišla možná začátkem listopadu. Díky!

nahlásit spamnahlásit spam 3 / 3 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