C# StreamWriter take the Path from the textbox

  • C#

Es gibt 24 Antworten in diesem Thema. Der letzte Beitrag () ist von petaod.

    C# StreamWriter take the Path from the textbox

    Hallo zusammen,

    Ich habe versucht mit meinem Code nach Hilfe zu suchen, aber leider bin ich nicht gut beim erklären.

    Für mein uni (ich bin in 1 semester) benötige ich eine programm, welche in c# geschrieben werden muss und ein Winforms sein soll, der von textbox1.text und textbox2.text die Daten nimmt und das mit einem Button in textbox3.text eingegebene Pfad als .txt Dokument speichert und diese txt Dokument muss texbox2.text Daten nimmt und so eine .txt Datei erstellt

    Also so Bsp wenn man das ausfüllt:

    Sagen wir textbox1.text hat man "example" geschrieben und textbox2.text hat man "hello"

    Das Programm soll das von textbox3.text eingegebene Pfad Speichern sagen wir mal in textbox3.text steht "C:\User\Desktop" und die Datei name soll durch textbox2.text generiert werden also "hello.txt"

    Wie kriege ich das hin? :(

    Möchtet ihr auch mein Quellcode sehen?
    Ja klar!


    Hier:

    Spoiler anzeigen

    C#-Quellcode

    1. int stringLength = (int)numericUpDown1.Value;
    2. trackingcodetxt.Text = GetRandomString(stringLength);
    3. using (StreamWriter sw = new StreamWriter(trackingcodetxt.Text +".txt"))
    4. {
    5. string folderPath = pfadtxt.Text; //Das funktioniert aber leider nicht :(
    6. sw.WriteLine(";" + trackingcodetxt.Text + ";;;;;;;;;;;;;;;;;;;;;" + rechnungsnummertxt.Text + ";" + datenbankcombobox.Text);
    7. MessageBox.Show("Erfolgreich", "Auto-Save | V1.0.2", MessageBoxButtons.OK, MessageBoxIcon.Information);
    8. }
    9. //StreamWriter A = new StreamWriter(pfadtxt.Text + "test.txt");
    10. //A.WriteLine(";" + trackingcodetxt.Text + ";;;;;;;;;;;;;;;;;;;;;" + rechnungsnummertxt.Text+ ";" + datenbankcombobox.Text) ;
    11. //A.Close();
    12. trackingcodetxt.Enabled = true;
    13. }
    14. private string GetRandomString(int length)
    15. {
    16. string letters = "qwertzuioplkjhgfdsayxcvbnmQWERTZUIOPLKJHGFDSAYXCVBNBM1234567890";
    17. Random random = new Random((int)DateTime.Now.Ticks);
    18. string randomString = "";
    19. for (int i = 0; i < length; i++)
    20. {
    21. randomString += letters[random.Next(0, letters.Length - 1)];
    22. }
    23. return randomString;
    24. }
    25. if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
    26. {
    27. pfadtxt.Text = folderBrowserDialog1.SelectedPath;
    28. Properties.Settings.Default.datenbanks = datenbankcombobox.Text;
    29. Properties.Settings.Default.savefolder = pfadtxt.Text;
    30. Properties.Settings.Default.Save();
    31. MessageBox.Show("Pfad automatisch gespeichert zum ändern bitte Programm reseten!.", "Auto-Save | V1.0.2", MessageBoxButtons.OK, MessageBoxIcon.Information);
    32. rechnungsnummertxt.Enabled = true;
    33. generierenbtn.Enabled = true;
    34. }
    35. else
    36. {
    37. MessageBox.Show("Ohne Pfad kann keine Datei erstellt u. gespeichert werden!", "PFAD AUSWÄHLEN!", MessageBoxButtons.OK,MessageBoxIcon.Error);
    38. }
    39. }
    @mehmetqan Fehlt noch die Liste der Randbedingungen.
    Erestell ein NEUES PROJEKT, kopiere Deinen Code da hinein und sorge dafür, dass alles compiliert.
    Dieses Projekt bereinigst Du (kein bin, obj, vs-Ordner), zipst es und hängst es an: Erweiterte Antwort => Dateianhänge => Hochladen.
    Dann schreibst Du, welche Controls wie befüllt sein müssen, was passieren soll und was statt dessen passiert.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @RodFromGermany ich verstehe das leider nicht so ganz. Es soll einfach in dem Pfad die Datei erstellen, welche in pfattxt.Text bereits steht... kannst du mir da vielleicht helfen, wie der Code aussehen soll...

    C#-Quellcode

    1. ​string folderPath = pfadtxt.Text; //Hier steht der Pfad :(
    2. sw.WriteLine(";" + trackingcodetxt.Text + ";;;;;;;;;;;;;;;;;;;;;" + rechnungsnummertxt.Text + ";" + datenbankcombobox.Text);
    3. MessageBox.Show("Erfolgreich", "Auto-Save | V1.0.2", MessageBoxButtons.OK, MessageBoxIcon.Information);

    mehmetqan schrieb:

    ich verstehe das leider nicht so ganz.
    Strell Dir vor, jemand anders hat dasselbe Problem und postet diesen Code.
    Um helfen zu können, genügt es nicht, den Code zu anzusehen, sondern er muss laufen. Dazu muss er compilieren.
    Dein Code compiliert nicht.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @mehmetqan OK. Läuft soweit.
    Was muss ich tun, wie muss ich das Programm bedienen, damit ich Deinen Effekt reproduzieren kann?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Dein Problem liegt wohl eher hier:

    C#-Quellcode

    1. using (StreamWriter sw = new StreamWriter(trackingcodetxt.Text + ".txt"))

    Denk mal drüber nach. ;)

    Spoiler anzeigen
    ​public StreamWriter(string path)
    Member von "System.IO.StreamWriter"

    Zusammenfassung:
    Initialisiert eine neue Instanz der System.IO.StreamWriter-Klasse für die angegebene Datei unter Verwendung der Standardcodierung und -puffergröße.

    Parameter:
    path: Der vollständige Dateipfad, in den geschrieben werden soll. path ein Dateiname kann sein.
    Wenn der Text vollständig als Variable vorliegt, ginge auch System.IO.File.WriteAllText(...).
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @RodFromGermany

    Das Programm nimmt von Rechnungtxt.text und trackingtxt.text (trackingtxt.text erstellt random Zahlen und Buchstaben) die Einträge und erstellt am Ende eine .txt Datei, welche die name von trackingtxt.text haben muss spricht. Wenn in trackingtxt.text random das hier generiert wird -->> jeiJsiNsi82J soll der Datei Name so sein -->> jeiJsiNsi82J.TXT und der Ofad, welche der .txt Datei speichern soll steht im pfadtxt.text. der User wählt am Anfang ein Ordner und dies wird automatisch in pfadtxt.text geschrieben. Genau da soll der TXT file gespeichert werden
    @mehmetqan So was:

    C#-Quellcode

    1. // durch diesen Pfadtxt.Txt z.B. steht C:\Desktop soll das da gespeichert werden nur hier habe ich probleme
    2. string folderPath = Path.Combine(this.pfadtxt.Text, this.trackingcodetxt.Text + ".txt");
    3. using (StreamWriter sw = new StreamWriter(folderPath))
    4. {
    5. sw.WriteLine(";" + this.trackingcodetxt.Text + ";;;;;;;;;;;;;;;;;;;;;" + this.rechnungsnummertxt.Text + ";" + this.datenbankcombobox.Text);
    6. }
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    mehmetqan schrieb:

    Also wir müssen this. nutzen
    Ich habe mein Studio so eingestellt.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @RodFromGermany hey ...

    also jetzt habe ich folgender Problem...

    der Professor sagt uns, dass wir eine Logs.Txt datei erstellen müssen und alle einträge welche sich in den 2 Textboxen eingetragen werden sollen immer in der Logs.TXT Datei gespeichert werden.

    Jedes Eintrag muss das Programm in der neuen Zeile speichern (in Logs.txt) und nichts darf überschreiben werden.

    Am ende, bevor das Programm eine random Zahl zu den bestimmten rechnungsnummer generiert, muss überprüft werden ob diese Rechnungsnummer oder diese Random Zahl schonmal in der Logs.TXT Datei war. Weil wenn nicht, soll der Programm ganz normal alles generieren...

    Ich habe das geschrieben, es klappt aber er überschreibt jedes mal...

    C#-Quellcode

    1. private void generierenbtn_Click(object sender, EventArgs e)
    2. {
    3. string strTheFile = File.ReadAllText(@"LOGS.TXT"); //Read the TXT LOG FILE to check DUPLICATE
    4. if (strTheFile.Contains(trackingcodetxt.Text + rechnungsnummertxt.Text + Environment.NewLine))
    5. {
    6. MessageBox.Show("Es wurde bereits für diese Order eine Trackingnummer generiert!", "Auto-Check | V1.0.0", MessageBoxButtons.OK, MessageBoxIcon.Error);
    7. }
    8. else {
    9. int stringLength = (int)laengeupdown.Value; // IF ALL OK GENERATE THE FILE
    10. trackingcodetxt.Text = "B2B" + GetRandomString(stringLength);
    11. string folderPath = Path.Combine(this.pfadtxt.Text, this.trackingcodetxt.Text + ".txt");
    12. using (StreamWriter sw = new StreamWriter(folderPath))
    13. {
    14. sw.WriteLine(";" + this.trackingcodetxt.Text + ";;;;;;;;;;;;;;;;;;;;;" + this.rechnungsnummertxt.Text + ";" + this.datenbankcombobox.Text);
    15. MessageBox.Show("Erfolgreich", "Auto-Save | V1.0.2", MessageBoxButtons.OK, MessageBoxIcon.Information);
    16. clearbtn.Enabled = true;
    17. infolabel.Text = "Erfolgreich: " + rechnungsnummertxt.Text;
    18. infolabel.ForeColor = Color.DarkGreen;
    19. }
    20. string folderPath2 = Path.Combine(@"LOGS.TXT");
    21. using (StreamWriter aw = new StreamWriter(folderPath2))
    22. {
    23. aw.WriteLine(this.trackingcodetxt.Text + "; " + this.rechnungsnummertxt.Text + "; " + this.datenbankcombobox.Text + "\r\n");
    24. }
    25. }
    26. }


    Wo genau habe ich mein Fehler?
    @petaod

    also jetzt habe ich es so gemacht:

    C#-Quellcode

    1. private void generierenbtn_Click(object sender, EventArgs e)
    2. {
    3. string strTheFile = File.ReadAllText(@"LOGS.TXT"); //Kontrollieren ob die Einträge sich bereits in der LOGS.TXT Datei befinden, wenn ja error Meldung P1
    4. if (strTheFile.Contains(trackingcodetxt.Text + rechnungsnummertxt.Text)) //gehört zu P1
    5. {
    6. MessageBox.Show("Es wurde bereits für diese Order eine Trackingnummer generiert!", "Auto-Check | V1.0.0", MessageBoxButtons.OK, MessageBoxIcon.Error);
    7. }
    8. else { // Wenn alles ok ist generieren in den Ordner, welche im Pfad.txt eingegeben ist und ebenso auch die Daten in LOGS.TXT speichern
    9. int stringLength = (int)laengeupdown.Value;
    10. trackingcodetxt.Text = "B2B" + GetRandomString(stringLength);
    11. string folderPath = Path.Combine(this.pfadtxt.Text, this.trackingcodetxt.Text + ".txt");
    12. using (StreamWriter sw = new StreamWriter(folderPath))
    13. {
    14. sw.WriteLine(";" + this.trackingcodetxt.Text + ";;;;;;;;;;;;;;;;;;;;;" + this.rechnungsnummertxt.Text + ";" + this.datenbankcombobox.Text);
    15. MessageBox.Show("Erfolgreich", "Auto-Save | V1.0.2", MessageBoxButtons.OK, MessageBoxIcon.Information);
    16. clearbtn.Enabled = true;
    17. infolabel.Text = "Erfolgreich: " + rechnungsnummertxt.Text;
    18. infolabel.ForeColor = Color.DarkGreen;
    19. }
    20. string newContent = this.trackingcodetxt.Text + "; " + this.rechnungsnummertxt.Text + "; " + this.datenbankcombobox.Text; //hier wird es in LOGS.TXT die Daten gespeichert
    21. while (newContent != "exit")
    22. {
    23. File.AppendAllText(@"LOGS.TXT", newContent + Environment.NewLine);
    24. newContent = Console.ReadLine();
    25. }
    26. }
    27. }


    Aber es funktioniert leider nicht....