KINGx - Das inoffizielle PlayStation Forum & News Portal

Normale Version: Fehlercode in C#
Sie sehen gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Also auf die Gefahr hin ,dass ich mich lächerlich mache poste ich hier einfach mal mein Problem:
Ich lerne grade am c# am pc und will für ein kleines programm einstellen ,dass beim ersten start eine art begrüßungsfenster kommt, dies soll aber vom user abgestellt werden können. Jetzt habe ich die variable hilfe erstellt die momentan den wert 1 hat, wenn man dann im begrüßúngsfenster auf "zeige diese info nicht mehr" geht wird der wert der variable um 1 verringert (also auf 0^^).
Beim Start des Programmes läuft jetzt immer die if clause:

Code:
if (hilfe == 1) {
                Form3.Show();

Form3 ist in diesem fall das info fenster...
Jetzt kriege ich aber immer vom Compiler ( Microsoft Visual C# 2008) die 2 Fehlermeldungen
1. Verwendung der nicht zugewiesenen lokalen Variablen "Form3"
2.Fehler Für das nicht statische Feld, die Methode oder die Eigenschaft "System.Windows.Forms.Control.Show()" ist ein Objektverweis erforderlich. C:\Users\David\AppData\Local\Temporary Projects\WindowsFormsApplication1\Form1.cs 19 17 WindowsFormsApplication1


Um Fehler 1 zu beheben habe ich (in meinem Nichtwissen XD)
die if clause so verändert:

Code:
if (hilfe == 1) {
                Form Form3 = info;
                Form3.Show();

Jetzt kriege ich nur noch die Fehlermeldung:

Fehler 1 Der Name "info" ist im aktuellen Kontext nicht vorhanden. C:\Users\David\AppData\Local\Temporary Projects\WindowsFormsApplication1\Form1.cs 19 30 WindowsFormsApplication1

Kann mir bitte jemand helfen?
Ich will doch nur ,dass über Form3.Show(); sich das Info Feld öffnet...

danke im vorraus
mfg
davdda

Ps: By the way, wie mache ich es so ,dass eine Variable ihren Wert auch nach beenden des Programmes behält? Eine Konstante möchte ich nicht benutzen ,da sich die Variable durch den Nutzer verändern kann...

Nur noch eine Fehlermeldung zu bekommen, heißt nicht unbedingt, dass du den zweiten Fehler schon behoben hast. Es kann bedeuten, dass der Compiler nach dem ersten Fehler bereits abbricht. (Dies ist Compiler abhängig.)

Ich kann kein C sharp, aber da es das OOP Konzept verwendet, müsste das Programm theoretisch so gehen:

if (hilfe == 1) {
Form form3 = new Form(); //sofern der Konstruktor der Klasse Form keine Parameter aufweist.
form3.Show();
}

form3 ist eine Variable der Klasse Form, durch "new Form()" assignen (zuweisen) wir ein Objekt der Klasse Form in form3, indem wir den Konstruktor der Klasse Form aufrufen (Form()). Ein Konstruktor sorgt dafür, dass ein Objekt in einen gültigen Zustand versetzt wird.
Nun "beinhaltet" form3 ein Objekt der Klasse Form und kann somit Methoden dieser Klasse aufrufen. Das ist das Konzept "Objekt-Orientierung". Um Methoden einer Klasse aufzurufen muss man immer erst ein Objekt dieser Klasse erstellen und abspeichern.

Wenn du z.B. den Wert einer Variable auch nach Beendigung des Programms haben willst, kannst du als eine Möglichkeit eine Textdatei erstellen, den Wert einer (oder mehrerer) Variable(n) hinein speichern und bei einem Neustart des Programms aus der Datei lesen.
Danke Smile ich probiers nachher am pc aus. Kannste mir vielleicht noch den befehl sagen mit dem variablen aus einer txt datei gelesen werden?
Ich könnte dir sagen wie es in Java geht, aber da ich kein C sharp kann, kann ich dir hier leider nicht behilflich sein. Im Internet habe ich nach einer Klassen Dokumentation von C sharp gesucht, die mir die Klassen mitteilt. Eventuell kann dir diese Seite (sie scheint C sharp code für Datei-Handling zu zeigen) weiterhelfen, die ich gefunden habe:

http://www.java2s.com/Code/CSharp/File-Stream/CatalogFile-Stream.htm
Am einfachsten ist es mit Streamreader/Writer
using System.IO;
String Pfad = "C:\\test.txt"; //Pfad zur Datei, die du speichern möchtest


using (StreamWriter sw = new StreamWriter(Pfad)) //Oder eben dann Streamreader
{
sw.WriteLine("Test"); //oder sw.Write("Test"); Schreibt aber keine Zeile dann, ähnlich wie console.write und writeline
}
Referenz-URLs