VB Programmiercode

Alcasim

Dungeon-Boss
Registriert
06.02.2007
Beiträge
948
Reaktionspunkte
3
Kommentare
90
Buffs erhalten
13
Hiho,

da ich gerade an meinen Französischwörtern bin hab ich mir überlegt, ein kleines Programm in VB zu schreiben. Da ich allerdings kaum Erfahrung habe (hab nur kleinere Tools wie Taschenrechner oder mal ein Passwortrechner j4f ge"codet") wollte ich hier nachfragen, wie ich das am besten anstell.. Stell mir das irgendwie so vor


Eine normale Oberfläche mit Textbox (Eingabefeld), einem "lösen" Button und einer Zufallsausgabe eines Wortes irgendwo in der Textbox. Bin zwar nicht gut in VB, im Gegenteil, aber falls ihr nicht versteht was ich meine.. Hier ein Beispiel (nicht lachen bitte^^)

AUSGABE ZUFÄLLIGES WORT (kenn den Befehl dafür nicht, nehmen wir mal an es ist "Bergbewohner", dazu müsst ich einfach die Französische Übersetzung ins Textfeld reinschreiben und dann auf den Button klicken. Dann irgendwie so
if "textbox"="montagnard
then msgbox="Richtig!"
else msgbox="Falsch!" (Dann wieder eine Schleife zu der "if" Passage


Wenn Richtig halt das nächste Wort..

Edit: Wie ich die Wörterliste importiere ist mir eigentlich egal.. Kann auch alles manuell reinschreiben, muss also nicht das Riesenprogramm sein mit nem importiertool aus irgend ner Excel Tabelle oder ner .txt Datei. Geht mir nur darum das es die Ausgabe zufällig ausgibt
 
Zuletzt bearbeitet von einem Moderator:
Möglichkeiten gibt es natürlich viele.

Mit VB .NET (ich gehe mal davon aus dass Du das nutzt) kann man z.B. sehr simpel Dateien mit getrennten Werten lesen.

Nur mal so als Grundgerüst um eine CSV Datei einzulutschen:
Code:
Dim currentRow As String()
Dim currentField As String
Dim i As Long = 0
Dim MyReader As New _
			Microsoft.VisualBasic.FileIO.TextFieldParser(sFile, System.Text.Encoding.UTF8)
			MyReader.TextFieldType = FileIO.FieldType.Delimited
			MyReader.SetDelimiters(";")
		   While Not MyReader.EndOfData
				i = 0
				currentRow = MyReader.ReadFields()
				For Each currentField In currentRow
					i = i + 1
				   'bla
				Next

			End While

Das Ganze packst Du dann z.B. in eine Klasse/Array. Schön wäre natürlich nen Quciksort drauf zu machen und dann die Standard-Suchfunktion zu nutzen. Letzteres dürfte bei so einem Projekt aber bereits als Luxus gelten.
 
Von VB hab ich keinen Plan, bin mit der Syntax nicht vertraut. Vielleicht hilft dir ja auch ein Beispiel in C# weiter:

[codebox]using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Collections;

namespace EnglischDeutschTeacher
{
public partial class Form1 : Form
{
private Dictionary<string, string> m_EnglischGermanCol = new Dictionary<string, string>();
private Random m_Random;
private string m_HoldValue;

public Form1()
{
InitializeComponent();
m_Random = new Random();

this.button1.Text = "next";
this.button2.Text = "answer";

this.button1.Click += new EventHandler(Next_Click);
this.button2.Click += new EventHandler(Answer_Click);

this.m_EnglischGermanCol.Add("house", "haus");
this.m_EnglischGermanCol.Add("car", "auto");
this.m_EnglischGermanCol.Add("plain", "flugzeug");
this.m_EnglischGermanCol.Add("holiday", "urlaub");
this.m_EnglischGermanCol.Add("water", "wasser");
this.label1.Text = "";

}
private string holdValue
{
get { return this.m_HoldValue; }
set { this.m_HoldValue = value; }
}
private void Next_Click(object sender, EventArgs e)
{
this.label1.Text = "";
this.textBox2.Text = "";
int random = m_Random.Next(0, m_EnglischGermanCol.Count - 1);
int i4Count = 0;
foreach (string value in m_EnglischGermanCol.Keys)
{
if (i4Count == random)
{
textBox1.Text = value;
holdValue = m_EnglischGermanCol[value];
break;
}
i4Count++;
}
}
private void Answer_Click(object sender, EventArgs e)
{
if (!(String.IsNullOrEmpty(textBox2.Text)))
{
if(textBox2.Text.ToUpper() == m_EnglischGermanCol[textBox1.Text].ToUpper())
label1.Text = "richtig";
}
else
{
label1.Text = "falsch - " + holdValue + " wäre richtig gewesen!";
}
}
}
}[/codebox]

Wenn du auf den Next-Button drückst, bekommst du ein zufälliges Wort aus der Collection. Beim drücken auf den Lösen-Button überprüfe ich, ob überhaupt was drin steht, wenn nicht, dann hol ich mir das zwischengespeicherte Wort aus der Property und sage, daß wäre es gewesen. Wenn es doch richtig ist, dann sage ich einfach nur: "Richtig!"
smile.gif


Und dann kannst du wieder auf "Next" drücken und bekommst wieder ein Wort. Schön wäre es natürlich, wenn man noch was einbaut, was verhindert, daß die Wörter zweimal kommen. Also, wenn etwas schon dran war, dann wird es der Collection entnommen, bis alles einmal dran war. Ich meine gut, wenn da mal ein paar hundert Wörter drin sind, dann macht es auch nichts, wenn sie immer wieder kommen. Keine Ahnung!
smile.gif


Achja, falls du in deinen VB keine random.next Methode oder derartiges hast, dann bietet es sich auch immer an, sich mit der Systemzeit irgendeinen Zufallsgenerator zu basteln. Das wäre das einfachste.
 
Zuletzt bearbeitet von einem Moderator:
Zurück