Hallo zusammen
ich bin recht neu mit der programmiersprache C# und auch im allgemeinen mit programmiersprachen.
ich möchte gerne wisse, wie man eine eingabe extern in eine datei abspeichern kann, so das ich beim nächsten start diese eingabe(n) abrufen kann. ich habe keine ahnung wie.
danke im voraus!
grüessli
PS: wenn diese frage schon im forum ist, könnte ich bitte den link bekommen, denn ich habe bei meiner suche nichts gefunden.
grüessli
kiwi_girl
@->->- Love is the one thing on earth that everyone wishes for with the whole heart!
Ja es gibt verschiedene möglichkeiten, hängt auch vom objekt ab, das du abspeichern möchtest.*Wenn du nur text abspeichern möchtest empfehle ich dir ein normales textfile (Namensraum System.IO) *Wenn du ein Objekt abspeichern möchtest kannst du es Serialisieren (Forensuche oder Google) *oder du kannst natürlich auch alles in ein xml-file abspeichern.
LG
ok danke.
ich speichere einen text und so spricht mir punkt 1 und 3 zu.
hättest du mir villeicht auch code? im visual studio index fand ich schon das gesuchte, ist mir aber nicht so verständlich..
grüessli
grüessli
kiwi_girl
@->->- Love is the one thing on earth that everyone wishes for with the whole heart!
Hi kiwi_girl
zum schreiben in eine Datei:
StreamWriter sw = new StreamWriter(FileName);
sw.Write("dein Text");
sw.Close
Zum lesen aus einer Datei:
StreamReader sr = new StreamReader(FileName);
sr.Read();
sr.Close();
Wobei es natürlich zu den Konstruktoren noch mehrere Überladungen gibt und natürlich auch noch mehrere Methoden zum Schreiben und Lesen.
Gruss
Dennie Schmögner
Dipl. Ing. Informatik / Fachrichtung Automatisierungstechnik
Microsoft Business Intelligence 2005
SharePoint Portal Server 2007
ok, ich bekomme immer diese fehler meldung 🙁
SmsZeichen\Form1.cs(431): (An object reference is required for the nonstatic field, method, or property 'SmsZeichen.frmSms.strJahreszeit'
ich verstehe einfach die fehlermeldung nicht :S
mein code ist dieser:
static void Main()
{
Application.Run(new frmSms());
using (StreamWriter sw = new StreamWriter("Season.txt"))
{
// Add some text to the file.
sw.WriteLine("Season for definition colors");
sw.WriteLine("-----------------------------");
// Arbitrary objects can also be written to the file.
sw.Write("The season is: ");
sw.WriteLine(strJahreszeit);
//sw.WriteLine(DateTime.Now);
}
}
was stimmt nicht?
ps: die fehlermeldung bezieht sich auf strJahreszeit
grüessli
kiwi_girl
@->->- Love is the one thing on earth that everyone wishes for with the whole heart!
Hallo kiwi_girl
Ist deine Variable static???? Denn soweit ich weiss, kann man in einer static Methode auch nur static Variablen verwenden, da ja static deklarierte Methoden und Felder keiner Klasse zugeordnet sind.
Gruss
Dennie Schmögner
Dipl. Ing. Informatik / Fachrichtung Automatisierungstechnik
Microsoft Business Intelligence 2005
SharePoint Portal Server 2007
ups...🙂
aber wo kann ich den code sonst noch hinschreiben?
im visual studio index:
using System;
using System.IO;
class Test
{
public static void Main()
{
// Create an instance of StreamWriter to write text to a file.
// The using statement also closes the StreamWriter.
using (StreamWriter sw = new StreamWriter("TestFile.txt"))
{
// Add some text to the file.
sw.Write("This is the ");
sw.WriteLine("header for the file.");
sw.WriteLine("-------------------");
// Arbitrary objects can also be written to the file.
sw.Write("The date is: ");
sw.WriteLine(DateTime.Now);
}
}
}
ich habe strJahreszeiten zugewiesen auf verschiedene Begriffen:
// Hier wird die Hintergrundfarbe auf leichgelb (hellgelb) gesetzt, wenn man
// im Menu "Spring" klickt.
private void meiSpring_Click(object sender, System.EventArgs e)
{
strJahreszeit = "Spring";
frmSms.ActiveForm.BackColor = Color.LightYellow;
}
// Hier wird die Hintergrundfarbe auf Lavendell (hellblau) gesetzt, wenn man
// im Menu "Summer" klickt.
private void meiSummer_Click(object sender, System.EventArgs e)
{
strJahreszeit = "Summer";
frmSms.ActiveForm.BackColor = Color.Lavender;
}
und diese möchte ich abspeichern, so das ich beim nächsten programmstart diese aufrufen kann.
grüessli
kiwi_girl
@->->- Love is the one thing on earth that everyone wishes for with the whole heart!
Warum packst du nicht den StreamWriter in eine eigene Methode? Dann kannst du gleichzeitig mit try und catch exceptions abfangen und wenn es zwingend notwendig sein sollte, dann setzt du noch ein Flag an Hand dessen du den Erfolg oder Misserfolg ersehen kannst.
gruss
Dennie Schmögner
Dipl. Ing. Informatik / Fachrichtung Automatisierungstechnik
Microsoft Business Intelligence 2005
SharePoint Portal Server 2007
danke hat mir den blick geöffnet 🙂
hatte ein paar nervende fehler gemacht und deshalb hatte es nie funktioniert.
jetz muss ich nur noch schauen, ob ich die angaben wieder auslesen kann...
grüessli
kiwi_girl
@->->- Love is the one thing on earth that everyone wishes for with the whole heart!
Noch als Tip, schau dir die Überladungen der Konstruktoren an, das kann vielleicht wichtig werden.
Und für Details gibt es ja noch die MSDN Hilfe online.
Gruss
Dennie Schmögner
Dipl. Ing. Informatik / Fachrichtung Automatisierungstechnik
Microsoft Business Intelligence 2005
SharePoint Portal Server 2007
danke!
ich finde nie das was ich brauche in den msdn bibliothek und suche...ist die Hilfe viel anders?
bin immer offen für links 😁
grüessli
kiwi_girl
@->->- Love is the one thing on earth that everyone wishes for with the whole heart!
Aber Google kennst du schon oder? 🤔
Das sollte fürs erste reichen.
Dennie Schmögner
Dipl. Ing. Informatik / Fachrichtung Automatisierungstechnik
Microsoft Business Intelligence 2005
SharePoint Portal Server 2007
danke für di links!
was ist google?? 😜
😁
"nei, seich..."
das problem welches ich jetzt habe ist, dass ich nicht weiss wie ich eine methode aufrufen kann, welches gerade als erstes startet (wenn das das richtige wort ist :S )
PS: ich weiss...bin anfänger auf der ganzen linie...🙂
grüessli
kiwi_girl
@->->- Love is the one thing on earth that everyone wishes for with the whole heart!
Keine Ahnung was du wirklich meinst, aber du kannst zum Beispiel im Konstruktor Methodenaufrufe unterbringen, ansonsten würden mir noch Interfaces einfallen um eine Methode zu einem bestimmten Zeitpunkt auszuführen. Events dürften vielleicht auch für dich in Frage kommen.
Dennie Schmögner
Dipl. Ing. Informatik / Fachrichtung Automatisierungstechnik
Microsoft Business Intelligence 2005
SharePoint Portal Server 2007
ok...
static void Main()
{
Application.Run(new frmSms());
//dateiLesen();
}
private void dateiLesen()
{
StreamReader sr = new StreamReader("Season.txt");
// MessageBox.Show(sr.ReadLine());
string ereignis = sr.ReadLine();
if(ereignis == "Spring")
{
meiSpring.PerformClick();
}
else if(ereignis == "Summer")
{
meiSummer.PerformClick();
}
else if(ereignis == "Autumn")
{
meiAutumn.PerformClick();
}
else if(ereignis == "Winter")
{
meiWinter.PerformClick();
}
sr.Close();
// return;
}
// Das Form wird geschlossen (Programm) per Klick auf einem Button
private void btnEnd_Click(object sender, System.EventArgs e)
{
Close();
}
ich habe die methode dateiLesen und dieser würde ich gerne, gerade nach dem das formular erstellt worden ist, "starten". Weiss aber nicht wie ich dies tun soll.
danke
grüessli
kiwi_girl
@->->- Love is the one thing on earth that everyone wishes for with the whole heart!
Hi kiwi_girl,
Beim Erzeugen der Form wird zuerst der Konstruktor aufgerufen, da kannst du den dateiLesen-Aufruf mit reinsetzen.
static void Main() {
Application.Run(new frmSms());
}
// Konstruktor
public frmSms() {
// [..]
dateiLesen();
}
private void dateiLesen() {
// ...
}
Gruss
Pulpapex
leider kommt diese fehlermeldung:
SmsZeichen\Form1.cs(427): Class 'SmsZeichen.frmSms' already defines a member called 'frmSms' with the same parameter types
danke!
grüessli
kiwi_girl
@->->- Love is the one thing on earth that everyone wishes for with the whole heart!
Das heisst der Konstruktor ist schon definiert. Der dateiLesen-Aufruf muss in den schon definierten Konstruktor mit rein. Der zweite Konstruktor kann wieder gelöscht werden.
ups...!
danke 😁 habs ein bisschen zu spät gesehen...naja 🙂
grüessli
kiwi_girl
@->->- Love is the one thing on earth that everyone wishes for with the whole heart!
Hi kiwi_girl,
mein Arbeitskollege kann sogut wie garnicht programmieren (im Gegensatz zu dir), schaft es aber trotzdem die meisten Informationen aus dem Internet zu suchen. StreamWriter/Reader ist allein in diesem Forum in unzähligen Varianten verfügbar und hätte dir sicherlich einige Fragen beantwortet. Versteh mich bitte nicht falsch, aber manchmal ist es einfach besser, wenn man sich mal bisschen auf die Suche macht.
Achja und was mit noch aufgefallen ist, bitte verwende in Zukunft doch bitte einen aussagekräftigeren Themenname, denn mit "externe Datei" kann nicht jeder direkt was anfangen. Was hälst du von "Wie speichert man Eingaben in eine ext. Datei?"
P.S.: Mit (ereignis == "Spring") läufst du sehr schnell Gefahr auf "Nichterkennen", wenn nicht exakt der Ausdruck "Spring" in einer Zeile steht und denke daran, es darf NUR der Ausdruck in einer Zeile stehen mehr nicht. Besser ware es, wenn du nach dem Ausdruck in der jeweiligen Zeile suchst. Hinweis: substring-Methode.
Hi -acid-,
das sind gute Ratschläge, die jeder im Hinterkopf behalten sollte.
Da wird schon beim "gute Ratschläge geben" sind, du solltest daran arbeiten, deine Fragen verständlicher zu formulieren. Wenn niemand antwortet, könnte es daran liegen, dass keiner versteht was du eigentlich willst.
Beispiel: Problem mit Hintergrundfarbe in Panel
Gruss
Pulpapex
@Pulpapex
Wie schon erwähnt, ist es bei meinen Fragen definitv mir nicht möglich diese so zu stellen, dass jeder sofort sieht was ich meine. Deswegen habe ich es auch nochmal dazugeschrieben. Ich wäre dir also sehr verbunden, wenn du dich auch meinem Problem annimmst. Wenn du die Frage nicht richtig verstehst, dann schreib es dazu und ich erläutere es genauer. Ansonsten weiß ich nicht, dass die Frage einfach nur nicht verstanden wird.
So und um wieder zum Ursprung zu kommen, machen wir einfach in meinem Thread weiter, sofern du mir da helfen kannst 😉
ok, danke...
die tips merke ich mir.
-acid-
aber das wegen der suche....ich habe vorher mind. 2-4 std gesucht. ok, ich habe nach falsche kriterien gesucht, aber ich fänge erst gerade an mit programmieren und habe keine ahnung was es alles hat. auch hatte ich kein anhaltspunkt nach was ich suchen musste/sollte.
dein kolleg ist ja villeicht besser als ich...sehr wahrscheinlich 🙂
grüessli
kiwi_girl
@->->- Love is the one thing on earth that everyone wishes for with the whole heart!
*g* Ja kenn ich - ging mir auch Anfangs so - Viel Glück weiterhin 😉
wieder einmal eine Fehlermeldung:
An unhandled exception of type 'System.NullReferenceException' occurred in SmsZeichen.exe
Additional information: Object reference not set to an instance of an object.
ich habe keine ahnung, wie ich dies lösen kann...hier ist noch der code welches no helfen könnte
public frmSms()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();
//
// TODO: Add any constructor code after InitializeComponent call
//
dateiLesen();
}
private void dateiLesen()
{
StreamReader sr = new StreamReader("Season.txt");
// MessageBox.Show(sr.ReadLine());
string ereignis = sr.ReadLine();
if(ereignis == "Spring")
{
meiSpring.PerformClick();
}
else if(ereignis == "Summer")
{
meiSummer.PerformClick();
}
else if(ereignis == "Autumn")
{
meiAutumn.PerformClick();
}
else if(ereignis == "Winter")
{
meiWinter.PerformClick();
}
sr.Close();
// return;
}
// Hier wird die Hintergrundfarbe auf Lavendell (hellblau) gesetzt, wenn man
// im Menu "Summer" klickt.
private void meiSummer_Click(object sender, System.EventArgs e)
{
// strJahreszeit = "Summer";
[COLOR]frmSms.ActiveForm.BackColor = Color.Lavender;
[/color]
StreamWriter sw = new StreamWriter("Season.txt");
sw.Write("Summer");
sw.Close();
}
die zeile, welches rot makiert ist, kommt die fehlermeldung
danke!
grüessli
kiwi_girl
@->->- Love is the one thing on earth that everyone wishes for with the whole heart!
Hi kiwi_girl. Hast du mal den Debugmodus mit F11 ausprobiert?
ja, habe ich, aber es hilft mir nicht weiter.
ich gloube es liegt etwas an der ausführung des letzten codeteil an dieser zeile:
frmSms.ActiveForm.BackColor = Color.Lavender;
hat jemand eine ahnung?
danke!
grüessli
kiwi_girl
@->->- Love is the one thing on earth that everyone wishes for with the whole heart!
Hallo kiwi_girl,
die Doku sagt mir:
Ein Form, das das momentan aktive Formular darstellt, oder NULL (Nothing in Visual Basic), wenn kein Formular aktiv ist.
Wenn also kein Forumlar aktiv ist, tritt genau die Situation ein, die die Exception beschreibt.
System.NullReferenceExceptions sind eigentlich immer leicht zu finden und zu beheben.
herbivore
hallo herbivore,
sorry, aber ich weiss immer noch nicht wie ich dies lösen sollte :S
ich habe sogar, einen kolleg gefragt und dieser hat auch keine ahnung.
danke!
gruss kiwi_girl
grüessli
kiwi_girl
@->->- Love is the one thing on earth that everyone wishes for with the whole heart!
Die NullReferenceException tritt auf, wenn bei einer Variablen, die null ist, versucht wird, auf Eigenschaften oder Methoden zuzugreifen.
Beispiel:
string a = null; // String a ist null.
int length = a.Length; // löst eine NullReferenceException aus.
In deiner Codezeile gibt es zwei potenzielle Objekte, die null sein könnten, entweder frmSms oder das Objekt in frmSms.ActiveForm.
frmSms.ActiveForm.BackColor = Color.Lavender;
Um die Exception zu umgehen, muss man vor dem Zugriff auf ungleich null prüfen (ich nehme mal an frmSms ist immer ungleich null):
if(frmSms.ActiveForm != null) {
frmSms.ActiveForm.BackColor = Color.Lavender;
}
Gruss
Pulpapex
ich könnte die fehlermeldung schon abfange, aber dann macht das programm nicht das was ich möchte.
leider probiere ich diesen einen fehler schon zu lange zu lösen.
ich gloube ich weiss wo der fehler steckt und ich probiere es zu erläutern.
ich kann bei meinem programm die hintergrund farbe wechseln. wenn es die hintergrund farbe wechselt, schreibt das programm zur gleichen zeit, die bestimmte farbe (variable) in eine externe datei. jetzt will ich, wenn das programm startet, dass das programm die variable (farbe) ausliest und sie dann aktiviert. somit will ich, dass die vorherige gebrauchte hintergrundfarbe wieder erscheint.
der fehler liegt somit mit der aktivierung der farbe. den code habe ich schon 5 antworten vorher hineingeschrieben und er hat sich bis heute nicht geändert.
ich hoffe, diese erklärung ist verständlich.
gruss
kiwi_girl
grüessli
kiwi_girl
@->->- Love is the one thing on earth that everyone wishes for with the whole heart!
Gibt es in deiner Anwendung ein oder mehrere Fenster?
Wenn es nur ein Fenster ist, versuch es mal so:
private void meiSummer_Click(object sender, System.EventArgs e) {
// Hintergrundfarbe im Anwendungsfenster ändern.
this.BackColor = Color.Lavender;
// ..
}
ActiveForm ist aber auch bei mehreren Fenstern verkehrt. Es soll ja die Hintergrundfarbe eines bestimmten Fensters geändert werden und nicht die von irgend einem zufälligerweise aktiven.
Gruss
Pulpapex
dann kommt schon die nächste fehlermeldung:
An unhandled exception of type 'System.IO.IOException' occurred in mscorlib.dll
Additional information: The process cannot access the file "C:\Lehrjahr 2\NET\C# Übungen\SmsZeichen\SmsZeichen\bin\Debug\Season.txt" because it is being used by another process.
private void meiSummer_Click(object sender, System.EventArgs e)
{
// strJahreszeit = "Summer";
this.BackColor = Color.Lavender; //frmSms.ActiveForm.BackColor = Color.Lavender;
(**StreamWriter sw = new StreamWriter("Season.txt");**
sw.Write("Summer");
sw.Close();
}
ich weiss nicht, bei welchem anderen prozess ich diesen textFile gebrauche X(
gruss
kiwi_girl
grüessli
kiwi_girl
@->->- Love is the one thing on earth that everyone wishes for with the whole heart!
so das problem wäre endlich gelöst 🙂
ich hatte einen völlig flaschen ansatz...anstatt den _click auszulösen, habe ich einfach anfang an this.backcolor = color. ... geschrieben und schon hat man kein problem 🙂
ich danke allen für die hilfe
gruss
kiwi_girl
grüessli
kiwi_girl
@->->- Love is the one thing on earth that everyone wishes for with the whole heart!