Entwickler-Ecke

IO, XML und Registry - Wie die Daten aus einem Textfeld in eine Datei schreiben?


DennisXX - Do 11.08.11 14:37
Titel: Wie die Daten aus einem Textfeld in eine Datei schreiben?
Hallo !

Ich würde gerne Daten in einem Textfeld eingeben wollen und diese dann mittels drücken eines Buttons in einer txt datei abspeichern. Ich weiß bisher, dass das in Richtung Streaming geht, aber ich kenne ledier nicht die genauen Details. Kann mir das vielleicht jemand von euch weiterhelfen?

Grüße
Dennis


Moderiert von user profile iconTh69: Topic aus C# - Die Sprache verschoben am Fr 12.08.2011 um 12:00


bakachan - Do 11.08.11 15:34

Schau dir dazu am besten mal die Klassen im Namespace "System.IO" an (z.B. die File-, Streamwriter- oder Textwriter-Klassen).


dark-destination1988 - Do 11.08.11 15:42


C#-Quelltext
1:
2:
3:
4:
StreamWriter sw = File.CreateText(filename);
                sw.Write(text);
                sw.Flush();
                sw.Close();


Trashkid2000 - Do 11.08.11 15:54

Warum nicht einfach so?

C#-Quelltext
1:
File.WriteAllText(filePath, content);                    


dark-destination1988 - Do 11.08.11 16:00

angeber :P


DennisXX - Do 11.08.11 16:11

Das ist der Code, den ich bisher geschrieben habe, aber leider bekomme ich da eine Fehlermeldung !


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
private void cmdStreaming_Click(object sender, EventArgs e)
        {
                string strNameData = "text.txt";
                string strCurrentPath = @"C:\";
                string strCurrentValue = String.Empty;

                using (StreamWriter writer = new StreamWriter(strCurrentPath + strNameData))
                {

                    try
                    {
                        strCurrentValue = txtValues.Text;
                        MessageBox.Show("Auslesen des Textfeldes erfolgreich !");
                    }

                    catch (NullReferenceException ex)
                    {
                        Console.WriteLine("Throwing Null Reference Exception in Streaming Situation, Source: " + ex.Message);
                        return;
                    }
            
                    finally
                    {
                         writer.WriteLine(strCurrentValue);
                         MessageBox.Show("Serialisierung erfolgreich abgeschlossen !");
                    }

                }            
                       
         }


Leider stürtzt das Programm bereits in dieser Codezeile ab:

using (StreamWriter writer = new StreamWriter(strCurrentPath + strNameData))

Was mache ich da falsch??

Grüße
Dennis


dark-destination1988 - Do 11.08.11 16:13

den pfad wird es dann wahrscheinlich nicht geben versuche stattdesen

C#-Quelltext
1:
new StreamWriter(strCurrentPath+"\\" + strNameData)                    

wenn die datei xyz heißt und der pfad C:/meinpfad wird daraus C:/meinpfadxyz--> gibts nicht--> also fliegt er dort raus
Edit: vergiss was ich geschrieben habe das haut schon hin... da du als pfad C:/

versuch es im administrator modus auszuführen!!!


bakachan - Do 11.08.11 16:15

Ich würde dir empfehlen grundsätzlich die System.IO.Path.Combine-Funktion zu verwenden aber das sollte hier nicht das Problem sein.

Zur Fehlersuche wäre es praktisch zu wissen welche Fehlermeldung kommt.
Kann es sein das du keine Schreibrechte auf dem Stammverzeichniss C:\ hast?


DennisXX - Do 11.08.11 16:25

Es lag tatsächlich daran, dass ich nicht auf C: schrreiben kann (warum auch immer), aber wenn ich auf ein persönliches Netzlaufwerk von mir "streame", dann läuft das Programm durch.

Ich teste ncohmal ein wenig herum und wenn noch eine Frage aufkommen sollte, dann melde ich mich nochmal.

Beste Grüße
Dennis


DennisXX - Fr 12.08.11 09:10

Hallo zusammen !

Ich habe mich eben mal daran versucht, die Daten, die ich in ein txt Dokument geschrieben habe, nun wieder auszulesen und irgendwo in meinem Programm einzeigen zu lassen, aber leider funktioniert diese Vorhaben nicht.

Kann mir vielleicht jemand von euch sagen, wie ich so etwas machen kann? Also was die grundlegenden Schritte sind meine ich !

Grüße
Dennis


bakachan - Fr 12.08.11 09:27

Eigentlich läuft das ganze ähnlich wie das schreiben ab.

user profile iconbakachan hat folgendes geschrieben Zum zitierten Posting springen:
Schau dir dazu am besten mal die Klassen im Namespace "System.IO" an (z.B. die File-, Streamwriterreader- oder Textwriterreader-Klassen).


Es gibt Funktionen um alles auf einmal einzulesen, zeilenweise einzulesen und so weiter...


DennisXX - Fr 12.08.11 09:56

Ok dann werde ich mich damit nochmal auseinandersetzen.

Ich habe hier nochmal versucht, einen Öffnen Dialog zu starten, allerdings bekomme ich in der Zeile "Nullable<bool> result = openDialog.ShowDialog();" einen Fehler, Boolean Konvertierung ist nicht möglich. Hier der Code:


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
OpenFileDialog openDialog = new OpenFileDialog();
openDialog.FileName = "Auswahl einer Datei";
openDialog.Filter = "Text documents (.txt)|*.txt";

Nullable<bool> result = openDialog.ShowDialog();

  if (result == true)
  {
     // Open document
     string filename = openDialog.FileName;
  }


Was genau mache ich da falsch und wie bekomme ich eine txt Datei dann geöffnet? Danke nochmal für die Unterstützung !

Grüße
Dennis


bakachan - Fr 12.08.11 10:40

Die Funktion ShowDialog() gibt dir ein Ergebnis vom Typ System.Windows.Forms.DialogResult zurück (kein bool).


DennisXX - Fr 12.08.11 10:45

Ok dann hat Microsoft das aber falsch auf seinen MSDN seiten dokumentiert, denn dort ist es so angegeben. Wie genau kann ich das denn nun umsetzen? Weiß das vielleicht jemand?

Grüße
Dennis


bakachan - Fr 12.08.11 10:53

user profile iconDennisXX hat folgendes geschrieben Zum zitierten Posting springen:
Ok dann hat Microsoft das aber falsch auf seinen MSDN seiten dokumentiert, denn dort ist es so angegeben.

Nein dort ist es richtig angegeben:
http://msdn.microsoft.com/en-us/library/system.windows.forms.openfiledialog.aspx#Y4753

Du warst wahrscheinlich auf dieser [http://msdn.microsoft.com/en-us/library/cc189944%28v=VS.95%29.aspx] Seite. Die ist aber für Silverlight und nicht für WinForms.

Aber solche Fehler wie sie bei dir vorkommen sollte man auch durchaus alleine lösen können.
Er sagt dir ja sogar das die Umwandlung von dem einen in den anderen Typ nicht geht.
Und falls du Visual Studio verwendest (bei einigen anderen auch) wird dir beim schreiben des Codes ja auch einiges angezeigt. Bei Funktionen z.B. Rückgabetyp und welche Überladungen mit welchen Parametern es gibt.
Spätestens wenn da ein anderer Rückgabetyp steht als du ihn erwartest solltest du stutzig werden.