# Visual Studio 2005 Basic - Vokabeltrainer



## Davip (23. September 2006)

Hi!
Ich bin durch Zufall auf der Suche nach einer Möglichkeit Programmieren zu lernen auf das Visual Studio 2005 Express gestoßen. Installiert hab ich es auch schon, sieht gut aus und ist kostenlos. 

Da ich noch nie programmiert und bisher eher webdesignt (HTML,CSS) und Grafiken erstellt habe wollte ich dann noch nicht mit etwas Schwerem anfangen. Also dachte ich mir, dass ich ja einen Vokabeltrainer machen könnte, da wir sowieso an soetwas in der Schule arbeiten werden. Bisher habe ich so allerhand ausprobiert und habe bisjetzt das Programmfenster mit 2 Textboxen ausgestatten, eines mit der Überschrift Vokabel und eines mit Übersetzung. Und einen Knopf mit "Weiter >".

Ich wollte das jetzt so machen, dass in die Erste Textbox eine Vokabel reingeladen wrd und der Benutzer in das untere die entsprechende Übersetzung eintragen muss. Wenn man auf Weiter klickt sollte abgeglichen werden, ob die Übersetzung richtig ist und wenn es richtig ist zur nächsten Vokabel springen. Wenn es falsch ist sollte eine Dialogbox kommen, dass es falsch ist oder ein Lämpchen blinken oder soetwas in der Art.

Ich wollte die Datenbank in einer Textdatei nach folgendem Schema aufbauen:

Französisches Wort (wird in die erste Textbox geladen)
Deutsche Übersetzung (wird geguckt, ob das in Textbox 2 steht)

Das wäre dann mit richtigen Wörtern zum Beispiel so:

inviter qn a faire qc
Jemanden einladen etwas zu tun

Bis jetzt  wollte ich das irgendwie so machen:


```
If vokabel = "inviter qn a faire qc" Then
If übersetzung = "Jemanden einladen etwas zu tun" Then
```

Und dann weiß ich eben nicht weiter, außerdem wäre ja damit nicht aus der Textdatenbank ausgelesen worden.

Leider kann ich bis jetzt eben noch nicht programmieren und wüsste gerne, wie man sowas realisiert. Ich erware jetzt natürlich kein fertiges Programm, aber Schnipsel von mehreren Usern wären schon cool.


----------



## Shakie (23. September 2006)

Da du ja, wie du selber gesagt hast, noch nie programmiert hast, solltest du dir erstmal Anfänger-Tutorials zur Programmiersprache anschauen. Da kann ich dir ein gutes empfehlen: Einstieg in VB.Net
Trotzdem muss ich dich darauf hinweisen, dass auch du (wie schon so viele andere vor dir) im falschen Forum gelandet bist. Hier ist das VB-Forum und *nicht *das VB.Net-Forum!
Hättest du dich ein bisschen mehr umgeschaut, dann hättest du das hier finden müssen: Themen zu VB.Net [2003/2005]

Und übrigens: du hast ein Accent grave (à) auf dem französischen a vergessen


----------



## Davip (23. September 2006)

Achso, soll ich da jetzt noch ein Thema erstellen oder verschiebt das ein netter Mod?  Zu dem accent, ich habs nicht hinbekommen, dass es nach unten zeigt. Dann hab ich es lieber gleich gelassen. ;-)


----------



## Shakie (24. September 2006)

Davip hat gesagt.:
			
		

> Achso, soll ich da jetzt noch ein Thema erstellen


Nein, du sollst dir erst mal Tutorials anschauen und nicht jeden mit deinen Anfängerfragen nerven, welche Google dir sowieso schneller beantworten kann als irgendwer hier auf Tutorials.de.


----------



## Davip (24. September 2006)

Ich hab jetzt soviele Tutorials durchfortstet, mir fallen bald die Augen raus! 
Aber wie kann man denn nun aus einer Textdatei nach dem Schema da oben auslesen? Das mit dem Button bekomm ich ja hoffentlich selber hin, geht doch mit if text1 = variablemitvokabelauszweiter reihe Then ...   ?


Edit:


Hab da was im Board gefunden:

http://www.manschula.de/software/programme_vokabel_trainer.html 

So würde ich das am liebsten aufbauen, nur ohne den komplizierten KRam drumherum. Die Vokabeln sollen einfach immer aus der Lektion.txt geladen werden und wenn man eine anndere will, muss man eben die TXT austauschen.


----------



## Norbert Eder (25. September 2006)

Nun, du musst die Daten entsprechend aus deiner Textdatei laden. Nicht nur den französischen Begriff, sondern auch gleich den deutschen mit.

Damit hast du beide Begriffe in insgesamt zwei Variablen gespeichert. Den französischen Begriff zeigst du in deiner ersten TextBox an. In der zweiten Textbox soll der User dann den deutschen Begriff eingeben und mit ENTER bestätigen. Danach musst du eigentlich nur folgendes machen:

```
if (txtGerman.Text == myGermanTranslation)
{
  // richtig, nächstes Wertepaar laden
} else
{
 // nö, so nicht, is falsch
}
```


----------



## Davip (25. September 2006)

Danke für die AW, aber wie mache ich das denn mit dem Auslesen? Könntest du vieleicht den Code zum Auslesen mir geben oder hier posten? Wie mache ich das denn, dass er immer weiter runter geht mit dem Lesen? Und das er nicht die ganze TXT als ein Variable sieht?

Textdatei sieht ja so aus:

Französische Vokabel
Deutsche Vokabel

Französische Vokabel
Deutsche Vokabel

.
.
.


MEine Textboxen tragen ja die Namen "vokabelbox" und "übersetzungsbox"


----------



## Norbert Eder (27. September 2006)

Also Umlaute in Variablennamen ist sowieso mal absolut tabu. Würde ich mir schnellstmöglichst abgewöhnen.

Weiters würde ich (wenn du schon eine txt-Datei verwendest) Paare speichern, also in etwa so:

```
französisch1|deutsch1
französisch2|deutsch2
```
Idealerweise würde ich ein XML verwenden. Des es könnte ja durchaus sein, dass ein Wort im Französischen mehrere deutsche Bedeutungen haben kann -> und umgekehrt.

Das Auslesen kannst du mit dem StreamReader machen. Dieser besitzt die Methode ReadLine, mit dessen Hilfe du die Datei Zeile für Zeile auslesen kannst. 

Weiters würde ich die Daten im Speicher halten (so ein Vokabelfile wird wohl nicht die Welt an Speicher verbrauchen), damit du nicht ständig Dateizugriffe machen musst. Beispielsweise würde sich hier eine Liste anbieten oder ähnliches. Per Zufallsgenerator kannst du dir dann irgendeinen Eintrag aus der Liste herausholen und dem User zur Anzeige bringen.

Informationen zum StreamReader, zu Listen etc. gibts im MSDN.


----------



## Davip (29. September 2006)

Ich hab das, glaube ich noch nicht verstanden, sohab ich mir erstmal Code zusammenkopiert.


```
Imports System.IO 

Public Class Form1 
Inherits System.Windows.Forms.Form 

Private Sub vokabelbox_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles vokabelbox.TextChanged 


Dim Streamreader As System.IO.StreamReader 


Try 
Streamreader = New System.IO.StreamReader("C:\Dokumente und Einstellungen\Dpipke\Eigene Dateien\Visual Studio 2005\Projects\WindowsApplication1\Vokabel Trainer\vokabeln.txt") 
vokabelbox.Text = Streamreader.ReadLine() 

Catch ex As Exception 
MsgBox("meine Fehlermeldung") 

End Try 


End Sub 

End Class 
Class Test 
Public Shared Sub Main() 
Try 
' Create an instance of StreamReader to read from a file. 
Dim StreamReader As StreamReader = New StreamReader("C:\Dokumente und Einstellungen\Dpipke\Eigene Dateien\Visual Studio 2005\Projects\WindowsApplication1\Vokabel Trainer\vokabeln.txt") 
Dim line As String 
' Read and display the lines from the file until the end 
' of the file is reached. 
Do 
line = StreamReader.ReadLine() 
Console.WriteLine(line) 
Loop Until line Is Nothing 
StreamReader.Close() 
Catch E As Exception 
' Let the user know what went wrong. 
Console.WriteLine("The file could not be read:") 
Console.WriteLine(E.Message) 
End Try 
End Sub 
End Class
```

Vieleicht kann mir da ja jmd. helfen, das richtig zu machen.


----------



## Norbert Eder (29. September 2006)

```
vokabelbox.Text = Streamreader.ReadLine()
```

Du sollst die Daten nicht direkt in die Textbox einlesen. Sondern in beispielsweise eine Liste. Dazu würde ich dir raten, dich mit Strukturen, Listen etc. auseinander zu setzen. Informationen dazu sollten zur Genüge zu finden sein.


----------

