morgen! hab ich problem mit daten in datei schreiben...

morgen!

so, ich hab schon ein paar klamotten gemacht:
Code:
using system.IO;

...
...

		private void button2_Click(object sender, System.EventArgs e)
		{
			StreamWriter StreamWriterExample = new StreamWriter("netz.txt"); 
            StreamWriterExample.WriteLine(textBox4.Text); 
            StreamWriterExample.WriteLine(textBox3.Text);
		}

allerdings bleibt meine datei leer!
 
nee, ne fehlermeldung bleibt aus.

Schon mal probiert das Ganze in nen Try Catch Block zu packen?

? was meinst du? ich bin totaler anfänger...

eine fehlermeldung kommt nur dann, wenn ich zweimal auf den button klicke.

Informationen über das Aufrufen von JIT-Debuggen
finden Sie am Ende dieser Meldung, anstatt in diesem Dialogfeld.

************** Ausnametext **************
System.IO.IOException: Der Prozess kann nicht auf die Datei "D:\sk\GAIN_WEB\GAIN_Web\bin\Debug\netz.txt" zugreifen, da sie von einem anderen Prozess verwendet wird.
at System.IO.__Error.WinIOError(Int32 errorCode, String str)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, Boolean useAsync, String msgPath, Boolean bFromProxy)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize)
at System.IO.StreamWriter.CreateFile(String path, Boolean append)
at System.IO.StreamWriter..ctor(String path, Boolean append, Encoding encoding, Int32 bufferSize)
at System.IO.StreamWriter..ctor(String path)
at GAIN_Web.Form2.button2_Click(Object sender, EventArgs e) in d:\sk\gain_web\gain_web\form2.cs:line 249
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ButtonBase.WndProc(Message& m)
at System.Windows.Forms.Button.WndProc(Message& m)
at System.Windows.Forms.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Geladene Assemblys **************
mscorlib
Assembly-Version: 1.0.5000.0
Win32-Version: 1.1.4322.573
CodeBase: file:///c:/windows/microsoft.net/framework/v1.1.4322/mscorlib.dll
----------------------------------------
GAIN_Web
Assembly-Version: 1.0.1377.14087
Win32-Version: 1.0.1377.14087
CodeBase: file:///D:/sk/GAIN_WEB/GAIN_Web/bin/Debug/GAIN_Web.exe
----------------------------------------
System.Windows.Forms
Assembly-Version: 1.0.5000.0
Win32-Version: 1.1.4322.573
CodeBase: file:///c:/windows/assembly/gac/system.windows.forms/1.0.5000.0__b77a5c561934e089/system.windows.forms.dll
----------------------------------------
System
Assembly-Version: 1.0.5000.0
Win32-Version: 1.1.4322.573
CodeBase: file:///c:/windows/assembly/gac/system/1.0.5000.0__b77a5c561934e089/system.dll
----------------------------------------
System.Drawing
Assembly-Version: 1.0.5000.0
Win32-Version: 1.1.4322.573
CodeBase: file:///c:/windows/assembly/gac/system.drawing/1.0.5000.0__b03f5f7f11d50a3a/system.drawing.dll
----------------------------------------
System.Xml
Assembly-Version: 1.0.5000.0
Win32-Version: 1.1.4322.573
CodeBase: file:///c:/windows/assembly/gac/system.xml/1.0.5000.0__b77a5c561934e089/system.xml.dll
----------------------------------------
System.Windows.Forms.resources
Assembly-Version: 1.0.5000.0
Win32-Version: 1.1.4322.573
CodeBase: file:///c:/windows/assembly/gac/system.windows.forms.resources/1.0.5000.0_de_b77a5c561934e089/system.windows.forms.resources.dll
----------------------------------------
mscorlib.resources
Assembly-Version: 1.0.5000.0
Win32-Version: 1.1.4322.573
CodeBase: file:///c:/windows/assembly/gac/mscorlib.resources/1.0.5000.0_de_b77a5c561934e089/mscorlib.resources.dll
----------------------------------------

************** JIT-Debuggen **************
Um das JIT-Debuggen (Just-In-Time) zu aktivieren, muss in der
Konfigurationsdatei der Anwendung oder des Computers
(machine.config) der jitDebugging-Wert im Abschnitt system.windows.forms festgelegt werden.
Die Anwendung muss mit aktiviertem Debuggen kompiliert werden.

Zum Beispiel:

<configuration>
<system.windows.forms jitDebugging="true" />
</configuration>

Wenn das JIT-Debuggen aktiviert ist, werden alle nicht behandelten
Ausnahmen an den JIT-Debugger gesendet, der auf dem
Computer registriert ist, und nicht von diesem Dialogfeld behandelt.
 

Konstantin Gross

Erfahrenes Mitglied
Versuch folgendes:

Code:
using system.IO;

...
...

		private void button2_Click(object sender, System.EventArgs e)
		{
			StreamWriter StreamWriterExample = new StreamWriter("C:\netz.txt"); 
            StreamWriterExample.WriteLine(textBox4.Text); 
            StreamWriterExample.WriteLine(textBox3.Text);
		}
 
ich muss den Pfad aber relativ lassen....

und mit C:\ geht auch nicht. höchstens C: aber dann erstellt er mir die datei auch nicht... aber ich kann mehrmals auf den button klicken, das stimmt wohl... :)
 

Saber

Erfahrenes Mitglied
Jungs, Ihr solltet den Stream schon schließen, bevor Ihr ihn ein zweites Mal auf ein und die selbe Datei abschießt. :)
Deshalb stürzt das Proggi auch erst beim zweiten Button-Klick ab. Nach dem ersten Klick sperrt Windows den Schreibzugriff auf die Datei, solange bis der Stream wieder geschlossen wird. Also am Ende der Click-Methode eine Close()-Methode o.ä. aufrufen!

Im übrigen musst Du aufpassen, dass Du die Datei nicht wieder überbügelst, wenn Du das zweite Mal was reinpumpst. Ranhängen, nicht neu erzeugen. :)
 
so, habs jetzt so gut wie.. funktioniert immer noch nicht so richtig... :(

Code:
		private void textBox1_TextChanged(object sender, System.EventArgs e)
		{
			StreamReader sr = null;
			try
			{
				sr = new StreamReader("pfad.txt"); 
				while (sr.Peek() >= 0) 
				{
					textBox1.Text += sr.ReadLine(); 
				}
			}
			catch (Exception ex)
			{
				MessageBox.Show(string.Format("Tja, kaputt\nGrund ist:\n{0}", ex.Message));
			}
			finally
			{
				if (sr != null)
					sr.Close();
			}
		}

ich kann zwar in die datei schreiben, aber es wird immer noch nicht ausgelesen, wenn ich die form neu öffne...
 
Zuletzt bearbeitet:

Saber

Erfahrenes Mitglied
Ähm, sollte nicht ursprünglich etwas IN eine Datei geschrieben werden? Offensichtlich liest Du nun was AUS!

Nur mal so nebenbei, so wird nie was in der Datei stehen. :)


Kommt schon, so schwer ist das doch nicht was in eine Datei zu schreiben. ;)

Code:
		private void button1_Click(object sender, System.EventArgs e)
		{
			try
			{
				StreamWriter sw = new StreamWriter("Test.txt", true);
				sw.WriteLine(textBox1.Text);
				sw.Close();
			}
			catch (System.Exception exc)
			{
				MessageBox.Show(this, exc.Message, "Fehler", MessageBoxButtons.OK, 
					MessageBoxIcon.Error);
			}
		}
 
Zuletzt bearbeitet:
hups... ich hab schon wieder weitergedacht....

das schreiben hab ich mit

Code:
		private void button1_Click(object sender, System.EventArgs e)
		{
			StreamWriter StreamWriterExample = new StreamWriter("pfad.txt"); 
			StreamWriterExample.WriteLine(textBox1.Text);
			StreamWriterExample.Close();
		}

gelöst... mir gehts jetzt schon wieder um das auslesen... entschuldigt für das durcheinander.... :-(
 

Saber

Erfahrenes Mitglied
Ich schätze mal, dass Dein Problem sein wird, dass Dir die Zeilenumbrüche fehlen oder sowas in der Art. Egal, so wie im unten aufgeführten Source Code gehts einwandfrei. Hab Dir sogar zwei Lesevarianten gepostet, eine liest die komplette Datei ein (ist auskommentiert) und die andere liest die Datei zeilenweise ein.

Code:
			// Lesen
			try
			{
				StreamReader sr = new StreamReader("Test.Txt");

				// Datei komplett lesen
				// textBox2.Text = sr.ReadToEnd();

				// Datei zeilenweise lesen
				string text = "";
				while((text = sr.ReadLine()) != null)
				{
					textBox2.Text += text + "\r\n";
				}

				sr.Close();
			}
			catch (System.Exception exc)
			{
				MessageBox.Show(this, exc.Message, "Fehler", MessageBoxButtons.OK, 
					MessageBoxIcon.Error);
			}

War doch gar nicht so schwer. :)
Hast Du im übrigen schon mal was von der MSDN gehört. *fg* :D
Online-Version der MSDN

Ach, und weils mir gerade auffällt. Ich weiss zwar nicht was Du vorhast, aber Leseoperationen in einem TextChanged-Ereignis können gefährlich sein. Wenn man in der betreffenden Textbox das Wort Hallo (5 Zeichen) eintippt, dann liest Du auch die Textdatei 5x ein, weil 5x das TextChanged-Ereignis ausgelöst wird. Besser Du setzt den Quelltext unter ein Leave-Ereignis, welches erst ausgelöst wird, wenn die Textbox bzw. das Steuerelement verlassen wird. :)
 
Zuletzt bearbeitet: