w oder m?

dartox

Erfahrenes Mitglied
Hi!

Ich hab ein Programm geschrieben, dass diverse Daten abfragt (per TextBox) und in ne .txt File speichert.

Nun meine Frage.

Bei ner TextBox wird nach dem Geschlecht gefragt, und falls der User nicht "m" oder "w" eingibt, sollte eine MessageBox kommen in der steht dass das Geschlecht ungültig sei, und die Datei soll nicht angelegt werden (in der dann alle Daten stehen).

Ich hab dass so gemacht (nur der Part mit "m" oder "w").

if (txtb_geschlecht.Text!=männlich)
MessageBox.Show("Das angegebene Geschlecht gibt es nicht","Fehler");
File.Delete(datei1);

else if (txtb_geschlecht.Text!=weiblich)
MessageBox.Show("Das angegebene Geschlecht gibt es nicht","Fehler");
File.Delete(datei1);

Tja, dass funktioniet aber nicht, es funktioniert auch nicht mit "switch", und auch nicht wenn ich schreib

if (txtb_geschlecht.Text=männlich || weiblich)

Es steht immer dass es keine "else" anweisung gibt, wie kann dass sein? Else sollte doch jeder Computer kennen.

Oben hab ich männlich und weiblich definiert, also daran liegt es nicht.

2 if Anweisungen hintereinander oder verschachtelt kann ich auch nicht machen, da es dann immer einen Error wegen falschen Geschlechts gibt.

Könnt ihr mir weiterhelfen?

MfG dartox
 
"männlich" und "weiblich" sind keine Strings, sondern "Variablen".

oben hab ich dass so definiert.

string männlich = "m";
string weiblich = "w";

MfG dartox
 
Dürfen sie, ist aber nicht empfehlenswert. Versuch mal folgendes:

Code:
if (txtb_geschlecht.Text!=männlich || txtb_geschlecht.Text!=weiblich)
{
tuwas();
}
else
{
fehler();
}

So dürfte es gehen.
 
Hi.

Warum nimmst du Textfelder? Checkboxen? Dann kann niemand was falsches Angeben.

Das hier sollte aber gehen:
Code:
string männlich = "m"; string weiblich = "w";
string auswahl = txtGeschlecht.Text.Trim().ToLower();
if (auswahl.Equals(männlich) || auswahl.Equals(weiblich))
{
   // inhalt ist korrekt..
}
else
{
   // ungültige eingabe
}

Code:
if (txtb_geschlecht.Text=männlich || weiblich)
2 Fehler hast du hier. Einerseits nur ein einzelnes = Zeichen, das ist eine Zuweisung. Zum Vergleichen brauchst du '=='. Der zweite Fehler ist, dass du das logische Oder auf die 2 Strings männlich und weiblich anwendest, was nicht möglich ist, da diese beiden keine boolschen Werte sind.
Das wäre richtig.
Code:
if (txtb_geschlecht.Text==männlich || txtb_geschlecht.Text == weiblich)

Dürfen Variablen Umlaute (ä, ö, ü) enthalten?
.net verwendet UTF-8 für eigentlich alles was mit Strings zu tun hat, deswegen stellen Umlaute kein Problem dar.

MfG,
Alex
 
Alexander Schuc hat gesagt.:
Hi.

Warum nimmst du Textfelder? Checkboxen? Dann kann niemand was falsches Angeben.
Dürfen wir bei dem Beispiel nicht anwenden, hätte ich sonst getan.
Das hier sollte aber gehen:
Code:
string männlich = "m"; string weiblich = "w";
string auswahl = txtGeschlecht.Text.Trim().ToLower();
if (auswahl.Equals(männlich) || auswahl.Equals(weiblich))
{
   // inhalt ist korrekt..
}
else
{
   // ungültige eingabe
}
\o/ juhuuu danke, dass funktioniert.
Code:
if (txtb_geschlecht.Text=männlich || weiblich)
2 Fehler hast du hier. Einerseits nur ein einzelnes = Zeichen, das ist eine Zuweisung. Zum Vergleichen brauchst du '=='.
Nö, ich hab ja "!=" geschrieben, also ungleich.
Code:
if (txtb_geschlecht.Text==männlich || txtb_geschlecht.Text == weiblich)
Geht auch nicht.

Aber danke für die andere Lösung, funktioniert einwandfrei.

MfG dartox
 
Code:
Nö, ich hab ja "!=" geschrieben, also ungleich.

In der Zeile hattest nicht, aber vielleicht hast dich ja nur beim Schreiben des Beitrags verschrieben. Egal.

Der Fehler wird darin liegen, das vielleicht ein Leerzeichen noch im Textfeld waren, oder du mit der Groß-/Kleinschreibung nicht aufgepasst hast. ;)
 
Könnt sein, danke dir nochmal.

Aber noch ne kleine Frage am Rand. Wenn ich dass Datum abfrage, und es soll in so nem Format eingegeben werden "**.**.****", wie mach ich dass? War nicht Platzhalter in C# diese Zeichen "#"?
 
Eventuell so?

Code:
if(txtbox_datum == String.Format("{0:##.##.####}", datum))
{
tuwas();
}
else
{
txtbox_datum.Text = "";
fehler();
}

Ich weiß nicht obs funktioniert, da ich hier gerade kein C# draufhabe.
 
Zurück