2k Aufrufe
Gefragt in Anwendungen(Java,C++...) von
Hallo liebe Gemeinde! Ich habe ein kleines Problem :-( Ich möchte zwei Strings miteinander vergleichen. Das soll wie so eine Art Aufgabe funktionieren, z.B. steht in einem Label "Geben Sie den Code für eine mögliche Lösung ein." (natürlich ohne die ""). In einer TextBox hat der Anwender die Möglichkeit, die richtige oder auch falsche Lösung einzugeben. Die richtige Lösung ist als string im Quellcode hinterlegt und soll nun mit dem verglichen werden, was der Anwender in die TextBox eingegeben hat. Bei richtiger Lösung soll Hintergrund der TextBox grün werden oder auch eine Meldung mit Bingo erscheinen. Bei falscher Lösung soll Hintergrund der TextBox rot werden oder auch eine Meldung mit Fehler erscheinen.
Die Auswertung erfolgt über einen Klick auf einen Button. Hier mal etwas Quellcode zum Anschauen:
private void buttonK1_Click(object sender, EventArgs e)
{
//FileStream fStream = new FileStream("D:\\Bilder\\joke.dat", FileMode.Create, FileAccess.Write); --> das sollte der Anwender als mögliche Lösung in die TextBox eingeben, ohne die beiden /

string strOriginal = "FileStream fStream = new FileStream(\"D:\\Bilder\\joke.dat\", FileMode.Create, FileAccess.Write);";
string strKopie = textBoxA1.Text;
if (strOriginal == strKopie)
//MessageBox.Show("Bingo!");
textBoxA1.BackColor = Color.LightGreen;
else
//MessageBox.Show("Fehler!");
textBoxA1.BackColor = Color.LightPink;
}

War eigentlich relativ einfach von mir gedacht, funktioniert aber nicht richtig. Hat jemand von Euch eine Ahnung wo der Fehler sein könnte.
Vielen Dank für die Hilfe. Gruß Claudia

4 Antworten

0 Punkte
Beantwortet von repiv Mitglied (272 Punkte)
Hallo,

mir ist zwar nicht klar wofür der FileStream benötigt wird, aber
Strings vergleicht man am besten über die equals Funktion.
Dann hat man auch die Möglichkeit anzugeben, ob Groß- und Kleinschreibung unterschieden werden soll.

string s1 = "Test";
string s2 = "test";
if (s1 == s2)
{
//ist nicht gleich
}
if (s1.Equals(s2, StringComparison.CurrentCultureIgnoreCase))
{
//ist gleich
}


Gruß Martin
0 Punkte
Beantwortet von
Hallo und danke für die schnelle Antwort. Zur Erklärung noch einmal: das was ich unter strOriginal stehen habe, soll der Anwender als richtige Antwort in eine Textbox eingeben - ich vergleiche quasi eine fest vorgegebene Antwort (strOriginal) mit der Eingabe in eine Textbox (strKopie). Beide sollten dann auch identisch sein. Und dazu gehört eben auch, dass der Anwender die Klasse FileStream benutzt. Der einzige Unterschied zwischen strOriginal und strKopie ist eigentlich der \ vor "D: und der \ nach dat. Ansonsten sind beide völlig gleich, die Auswertung bringt mir aber immer den else-Zweig also Fehler. Ich hab keine Ahnung wo der Fehler liegen könnte. Versuch doch einfach mal mein Stückchen Quellcode zum Laufen zu bringen, d.h. wenn ich auf den Button klicke, sollte dann als Meldung Bingo erscheinen und verrat mir, wie Du das gemacht hast. Danke und liebe Grüße, Claudia,
0 Punkte
Beantwortet von
Hallo,

ich wundere mich etwas warum jemand c# code in eine Textbox eintippen soll aber nun gut ...

Beim Eintippen in der Textbox muss der \\ als \ eingetragen werden, da Du hier das Escape Zeichen \ nicht brauchst.


Wenn Du diesen Text in die Textbox eintippst, funktioniert es und die Box wird grün.

FileStream fStream = new FileStream("D:\Bilder\joke.dat", FileMode.Create, FileAccess.Write);

Gruß Martin
0 Punkte
Beantwortet von
Hallo Martin,
besten Dank für die Hilfe - ich weiß jetzt auch warum es nicht funktioniert hat --> kleiner Denkfehler von mir, aber wenn ich die Esc Zeichen vor und nach Bilder auch weglasse, läuft es so wie gedacht.
P.S: Über der TextBox steht ein Label mit der Aufgabe, eine Variable für die Klasse FileStream zu vereinbaren und dann eine Datei namens joke.dat im Ordner D:\Bilder anzulegen bzw. zu öffnen; es soll in diese Datei nur geschrieben werden können.
Die Antwort auf diese Aufgabe ist quasi der Quelltexteintrag in die TextBox (da fiel mir gerade nichts besseres ein). Ich vergleiche also nur den TextBox Eintrag mit dem richtigen Wert, der in strOriginal hinterlegt ist. Deshalb c# code in eine TextBox. Liebe Grüße und vielen Dank, Claudia.
...