Streamreader cyklus (VB .NET)   otázka

VB.NET

Zdravím,

Dělám testovací software (kvíz), který má na jednom formu do polí vypsat otázku, a odpovědi.

Tudíž potřebuji pomoct s cyklem, který při zapnutí načte txt soubor kde jsou otázky a odpovědi.. a do polí ve formu vybere náhodou otázku ze souboru (1. problém, nevím jak náhodně vybral).

Nevím jestli je lepší do txt zapisovat pod sebou nebo oddělovat "|" a vepsat otázku a odpovědi na jeden řádek. př. otazka|odpoved1|odpoved2|iodpoved3|odpoved1jespravne

A jakým stylem mám přes button udělat pokračování cyklu, aby to načetlo další náhodou otázku.


Dim soubor As New IO.StreamReader("databaseotazekaodpovedi.txt") 
While Not soubor.EndOfStream
Dim otazka As string = soubor.ReadLine() //takhle mi to ale čte po řádcích 
Dim odpoved1 As string = soubor.ReadLine()
Dim odpoved2 As String = soubor.ReadLine()
Dim odpoved3 as string = soubot.readline()
dim spravnaodpoved as string = soubor.readline() // která odpověd je správná 
 

Dim otazka As New textbox1() // tady bych naivně chtěl aby otázku to mrsklo do jednoho pole a odpovědi do dalších
Dim odpoved1 as new textbox2()
dim odpoved2 as new textbox3()
dim odpoved3 as new textbox4()
End While
// To vyřešení správné odpovědi až bude cyklus hotový už vím jak udělám.. přes checkboxy nebo radio buttony.. to nějak dohromady dám, ale v tom cyklu absolutně nevím.
nahlásit spamnahlásit spam 0 odpovědětodpovědět

Nejjednoduší je mít to v souboru po řádcích, pokud ale chcete oddělovat pomocí | tak to přečtete takto:

Dim radek() as string = soubor.readline().split("|") 'rozdeli radek do pole stringu podle |
Dim otazka As string = radek(0)
Dim odpoved1 As string = radek(1)
Dim odpoved2 As String = radek(2)
Dim odpoved3 As String = radek(3)
Dim spravnaodpoved As String = radek(4)

Ve formulari si vytvorte textboxy a pak do nich uz jen prirazujte text, možná by stálo za zvážení použít Label

Textbox1.Text = otazka
nahlásit spamnahlásit spam 0 odpovědětodpovědět

Super, díky moc.

A jak do toho cyklu mám připsat přikaz nato aby to bralo náhodně otázky? Hned při spuštění jednu a pak pokaždé když vlastně budu chtít další otázku a odpovědi, po kliknutí na buttonu. aby to bylo jak kvíz no prostě.

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

Já bych ty otázky asi očísloval a pak "randomem" vygeneroval náhodné číslo otázky. Při procházení cyklem by se dalo toto číslo kontrolovat a při nalezení zobrazit... Problém je, že se odpovědi budou zobrazovat stále ve stejném pořadí, takže si to lze později zapamatovat a testování pak nebude mít tu "vypovídající" hodnotu.

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

Potřeboval bych právě pomoci se syntaxí těch buttonů, páč nevím jak to napsat. Zatím jsem si napsal tohle.


// FORM
Dim soubor As New IO.StreamReader("database.txt") 
While Not soubor.EndOfStream
Dim radek() as string = soubor.readline().split("|") 'rozdeli radek do pole stringu podle |
Dim otazka As string = radek(0)
Dim odpoved1 As string = radek(1)
Dim odpoved2 As String = radek(2)
Dim odpoved3 As String = radek(3)
Dim spravnaodpoved As String = radek(4)
End While

// Labely
label1.Text = otazka 'Potom do do těch jednotlivých labelu
label2.Text = odpoved1
label3.Text = odpoved2
label4.Text = odpoved3

A teď jak mám udělat příkaz pro button v menu, kterým kviz zapnu a náhodně zrovna do nově spuštěného formu vygeneruju otázku.

Na formu s otázkou potřebuji další button, kterým opět vyvolám novou otázku na tom samém formu. A pokud bylo odpovězeno správně (tu podmínku udělám přes checkboxy a přes ten tu čtvrtou odpověd, kterou nebudu nikam načítat ale bude tam jenom A,B,C jako identifikace těch správných odpovědi.. ty použiju také na ten button jako podmínku, ale to vím jak udělat), tak připočtu k nějaké vytvořené proměnné +1 (počítadlo správných odpovědí - to stačí normálně načíst int proměnou a pak přičítat 1? ještě jsem to nezkoušel, protože nemůžu dokud nefunguje ten cyklus :D, tak nevím, ale myslím, že to bude bez problémů)

Pomůže mi nějak tohle v mém případě? http://vbtheory.blogspot.cz/2012/05/read...

Děkuji za veškerou pomoc.

PS: Klidně se někomu nějak zavděčím za pomoc.

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