Dobrý den, jsem začátečník, jak v programování, tak ve VB.net a potřeboval bych poradit. Visual Basic 2008 Express Vytvořil jsem formulář, který obsahuje ComboBox, Button a nějaké labely a textboxy. V souboru *.txt jsou tři typy dat Jméno, Mód a Částka, vždy po trojicích, které se opakují. Tyto tři typy dat potřebuji načíst do samostatných proměnných tak, abych s nimi mohl dále pracovat. Po otevření formuláře se načtou všechna Jména ze souboru do ComboBoxu. V případě výběru v Comboboxu se mi načtu ještě další dvě hodnoty s tímto spojené do textboxu, v těchto textboxech je budu moci přepsat a znovu uložit do souboru. Pokoušel jsem se to realizovat pomocí souboru txt. Je to vhodná volba? Šlo by to vyřešit nějak jednodušeji například pomocí tabulky? Samozřejmě bych chtěl, aby data zůstávala zachovaná i po vypnutí programu (proto využívám soubor .txt). Při svém snažení jsem narazil na problém, že nemůžu zapsat na konkrétní řádek. Já osobně jsem se pokoušel o velice kostrbaté řešení. Mám deklarované globální proměnné (5*3). Při načítání formuláře načtu do všech proměnných data (co řádek to proměnná). Jména z nich vložim do ComboBoxu (zde mi to ale občas hlásí chybu InvalidArgument=Hodnota 4 není platnou hodnotou pro argument index.) Podle výběru v ComboBoxu zobrazím příslušené hodnoty do textboxů, zde bych je chtěl mít možnost editovat a po stisknutí tlačítka zapsat, jak do proměnných, tak do souboru.
Public Class hrac
Dim jmeno0 As String 'deklarace tří typů proměnných
Dim typhrac0 As String
Dim penez0 As Integer
Dim jmeno1 As String 'které se periodicky opakují
Dim typhrac1 As String
Dim penez1 As Integer
Dim jmeno2 As String
Dim typhrac2 As String
Dim penez2 As Integer
Private Sub hrac_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim soubor As New IO.StreamReader("database.txt")
jmeno0 = soubor.ReadLine() 'nacteni po jednotlivých radcich do proměnných
typhrac0 = soubor.ReadLine()
penez0 = soubor.ReadLine()
jmeno1 = soubor.ReadLine()
typhrac1 = soubor.ReadLine()
penez1 = soubor.ReadLine()
jmeno2 = soubor.ReadLine()
typhrac2 = soubor.ReadLine()
penez2 = soubor.ReadLine()
ComboBox1.Items.Insert(0, jmeno0) 'vloženi do ComboBoxu
ComboBox1.Items.Insert(1, jmeno1)
ComboBox1.Items.Insert(2, jmeno2)
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
Dim index As Integer
index = ComboBox1.SelectedIndex
If index = 0 Then
TextBox1.Text = jmeno0 'zobrazení v textboxecech, dle výběru
TextBox2.Text = typhrac0
TextBox3.Text = penez0
ElseIf index = 1 Then
TextBox1.Text = jmeno1
TextBox2.Text = typhrac1
TextBox3.Text = penez1
ElseIf index = 2 Then
TextBox1.Text = jmeno2
TextBox2.Text = typhrac2
TextBox3.Text = penez2
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim cislohrace As Integer
cislohrace = ComboBox1.SelectedIndex
If cislohrace = 0 Then
jmeno0 = TextBox1.Text 'změna hodnot a načtení z proměnných
typhrac0 = TextBox2.Text
penez0 = CStr(TextBox3.Text)
ElseIf cislohrace = 1 Then
jmeno1 = TextBox1.Text
typhrac1 = TextBox2.Text
penez1 = CStr(TextBox3.Text)
ElseIf cislohrace = 2 Then
jmeno2 = TextBox1.Text
typhrac2 = TextBox2.Text
penez2 = Cstr(TextBox3.Text)
A teď by mělo následovat vypsání do souboru, myslel jsem, že bych to udělal tak, že bych všechny hodnoty vymazal a zapsal vše znovu. Ale za prvé nevím jak a za druhé se mi celkově zdá to řešení strašně kostrbaté. Předně bych chtěl poděkovat za každou radu.
|