Benutzer mit den meisten Antworten
Visual C#

Frage
-
Hallo Experten
Ich hoffe Ihr könnt mir helfen, ich habe ein kleines Programm zum Kopieren von Fotos geschrieben. Das Programm soll nach betätigen das Buttons die Inhalte der zwei Textboxen sowie der zwei DateTimepicker in eine Textdatei schrieben. In meinem Codebeispiel klappt das aber nur mit der ersten Textbox? (Ich bekomme auch keine Fehlermeldung im Debugger). Im Anschluss soll eine Batchdatei aufgerufen werden die sich auf einem USB Stick befindet ( Variable Pfadangabe).
Habt Ihr eine Ahnung was ich falsch mache? Vielen Dank im Voraus
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; namespace WpfApplication1 { /// <summary> /// Interaktionslogik für MainWindow.xaml /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } private void textBox1_TextChanged(object sender, TextChangedEventArgs e) { } private void textBox2_TextChanged(object sender, TextChangedEventArgs e) { } private void button1_Click(object sender, RoutedEventArgs e) { using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\Users\Frank\Desktop\ff\Fotos.txt")) file.WriteLine(textBox1.Text,textBox2.Text); file.WriteLine(datePicker1.Text,datePicker1.Text); MessageBox.Show("Anfrage erfolgreich"); textBox1.Clear(); textBox2.Clear(); System.Diagnostics.Process.Start(@"\Pics\Sotieren.bat"); } private void datePicker2_SelectedDateChanged(object sender, SelectionChangedEventArgs e) { } private void datePicker1_SelectedDateChanged(object sender, SelectionChangedEventArgs e) { } } }
Antworten
-
Hallo zusammen,
wie Thomas schon schrieb, fehlen die geschweiften Klammern. Weiterhin erfüllst du nicht die nötigen Parameter für eine der Überladungen der Write/WriteLine-Methode. Diese nehmen in den meisten Fällen nur einen Parameter entgegen:using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\Users\Frank\Desktop\ff\Fotos.txt")) { file.Write(textBox1.Text); file.WriteLine(textBox2.Text);//Durch WriteLine kommt ein Zeilenumbruch ans Ende file.Write(datePicker1.Text); file.WriteLine(datePicker1.Text); }
Ggf. kannst du natürlich auch alle 4 Daten auf eine extra Zeile schreiben. Weiterhin solltest du genau darauf achten in welcher Form du das Datum in die Datei schreibst. Ich weiß nicht wie das weiter verarbeitet werden soll, u.U. hilft dir jedoch eine der ToString-Überladungen. In dem verlinkten Beitrag findest du einige Beispiele um bestimmte Datumsformate auszugeben.Tom Lambert - .NET (C#) MVP
Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets- Als Antwort vorgeschlagen Aleksander Chalabashiev Dienstag, 17. Februar 2015 16:57
- Als Antwort markiert Tom Lambert (Koopakiller)Moderator Sonntag, 22. Februar 2015 03:04
-
Wie Tom schon schrieb, hast Du durch den zweiten Parameter eine Überladung von WriteLine erwischt, die so ziemlich alles akzeptiert; nur geschieht bei Dir nichts weiter mit den 2ten Parameter. Du müsstes stattdessen erst einen Format-String angeben und danach die Parameter; die Stelle wo die Werte eingefügt werden definierst Du über Parameter-Platzhalter {} =>
file.WriteLine("{0} {1}", textBox1.Text, textBox2.Text);
Olaf Helper
[ Blog] [ Xing] [ MVP]- Als Antwort markiert Tom Lambert (Koopakiller)Moderator Sonntag, 22. Februar 2015 03:04
Alle Antworten
-
Der Fehler liegt (meiner Meinung nach) in der Using-Anweisung. Nur der erste file.WriteLine-Aufruf ist gültig, der zweite nicht. Packe diese doch bitte in Klammern:
using(var file = ...) { file.WriteLine(...); file.WriteLine(...); }
© 2015 Thomas Roskop
Germany // Deutschland
-
Danke Thomas für deine Antwort
leider hat es nicht funktioniert , falls du es so gemeint hast :
using (var file = new System.IO.StreamWriter(@"C:\Users\Frank\Desktop\ff\Fotos.txt")) file.WriteLine(textBox1.Text,textBox2.Text); file.WriteLine(datePicker1.Text,datePicker1.Text);
-
Hallo zusammen,
wie Thomas schon schrieb, fehlen die geschweiften Klammern. Weiterhin erfüllst du nicht die nötigen Parameter für eine der Überladungen der Write/WriteLine-Methode. Diese nehmen in den meisten Fällen nur einen Parameter entgegen:using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\Users\Frank\Desktop\ff\Fotos.txt")) { file.Write(textBox1.Text); file.WriteLine(textBox2.Text);//Durch WriteLine kommt ein Zeilenumbruch ans Ende file.Write(datePicker1.Text); file.WriteLine(datePicker1.Text); }
Ggf. kannst du natürlich auch alle 4 Daten auf eine extra Zeile schreiben. Weiterhin solltest du genau darauf achten in welcher Form du das Datum in die Datei schreibst. Ich weiß nicht wie das weiter verarbeitet werden soll, u.U. hilft dir jedoch eine der ToString-Überladungen. In dem verlinkten Beitrag findest du einige Beispiele um bestimmte Datumsformate auszugeben.Tom Lambert - .NET (C#) MVP
Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets- Als Antwort vorgeschlagen Aleksander Chalabashiev Dienstag, 17. Februar 2015 16:57
- Als Antwort markiert Tom Lambert (Koopakiller)Moderator Sonntag, 22. Februar 2015 03:04
-
Wie Tom schon schrieb, hast Du durch den zweiten Parameter eine Überladung von WriteLine erwischt, die so ziemlich alles akzeptiert; nur geschieht bei Dir nichts weiter mit den 2ten Parameter. Du müsstes stattdessen erst einen Format-String angeben und danach die Parameter; die Stelle wo die Werte eingefügt werden definierst Du über Parameter-Platzhalter {} =>
file.WriteLine("{0} {1}", textBox1.Text, textBox2.Text);
Olaf Helper
[ Blog] [ Xing] [ MVP]- Als Antwort markiert Tom Lambert (Koopakiller)Moderator Sonntag, 22. Februar 2015 03:04
-
Hallo Olaf, Hallo Tom
Herzlichen Dank für euer ausführliche Antworten. Ich konnte darauf aufbauend nun viele weitere Auslagerungen programmieren. (Bedeutung verstanden :-))Allerdings habe ich es bis jetzt noch nicht geschafft im Anschluss den Batch ausführen zu lassen.
Dies geht immer nur dann wenn ich einen absoluten Pfad angebe.Ich habe es mit dieser Zeile versucht :
System.Diagnostics.Process.Start(@"\Pics\Sotieren.bat");
Ist das keine relative Pfadangebe?
VD Frank
-
Hallo Frank,
Die relativen Pfadangaben gehen immer vom Ausführungsverzeichnis aus. Im Normalfall also von dem Ordner aus wo die EXE liegt. Wenn nun die BAT-Datei im Ordner Pics liegt, musst du noch das Backslash am Anfang weg lassen.
System.Diagnostics.Process.Start(@"Pics\Sotieren.bat");
Dann sollte es funktionieren.
Tom Lambert - .NET (C#) MVP
Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets