Autor Beitrag
csharpfreak
Hält's aus hier
Beiträge: 13



BeitragVerfasst: Do 24.10.13 11:08 
ausblenden volle Höhe C#-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:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
private void SaveFile()
        {
            //übernimmt angegeben Pfad aus der Textbox 
            otherpath = TB_dir.Text;
            //Dateiname 
            string filename = "\\config.ini";
            /*
             * benutze Streamwriter, der für das Schreiben der Datei zuständig is, es soll die Datei im angegeben Pfad aufgerufen werden
             * Hier wird erstmal eine Original-Konfigurationsdatei im Vorgabe-Ordner hinterlegt
             */

            using (StreamWriter sw = new StreamWriter(path + filename))
            {
                //schreibt die Werte in die Datei
                sw.WriteLine(TB_dir.Text + Environment.NewLine + TB_server.Text + Environment.NewLine + TB_db_name.Text + Environment.NewLine + TB_user.Text + Environment.NewLine + TB_pw.Text);
                //schließt Streamwriter
                sw.Close();
            }

            /*
             *Nachdem speichern der Original-Konfigurationsdatei soll eine Kopie in den Verzeichnis erstellt werden, 
             *den der User ausgewählt hat.
             */

 
            //überprüft die Orginial-Konfigdatei, wenn diese existiert
            if ( File.Exists(path + "\\" + file))
            {
                //soll diese eingelesen werden
                string filetext = File.ReadAllText(path + filename);
                //Array von den gespeicherten Werten, dabei wird filetext nach Zeilenumbrüchen getrennt
                lines = filetext.Split(new string[] { Environment.NewLine }, StringSplitOptions.None);
                //angegebener Pfad in der Datei
                userpath = lines[0];


                /*
                 *Soll die in der Datei angegegeben Pfad mit der Textbox-Pfad vergleichen.
                 *Falls diese nicht gleich sind, dann soll die alte Datei gelöscht werden.
                 */

                if (userpath != otherpath)
                {
                    //löscht Datei
                    File.Delete(@userpath+filename);

                    //speichert in neuen Pfad
                    using (StreamWriter sw2 = new StreamWriter(@otherpath + filename))
                    {
                        //schreibt die Werte in die Datei
                        sw2.WriteLine(otherpath + Environment.NewLine + TB_server.Text + Environment.NewLine + TB_db_name.Text + Environment.NewLine + TB_user.Text + Environment.NewLine + TB_pw.Text);
                        //schließt Streamwriter
                        sw2.Close();
                        //Meldung, das die Datei gespeichert wurde
                        MessageBox.Show("Datei1 wurde gespeichert");
                    }
                }
                //falls der gleiche Pfad ausgewählt wurde wie in der vorherigen Datei, dann überschreibt er diese nur
                else
                {
                    //löscht Datei
                    File.Delete(@userpath + "\\" + file);
                    using (StreamWriter sw3 = new StreamWriter(otherpath + filename))
                    {
                        //schreibt die Werte in die Datei
                        sw3.WriteLine(otherpath + Environment.NewLine + TB_server.Text + Environment.NewLine + TB_db_name.Text + Environment.NewLine + TB_user.Text + Environment.NewLine + TB_pw.Text);
                        //schließt Streamwriter
                        sw3.Close();
                        //Meldung, das die Datei gespeichert wurde
                        MessageBox.Show("Datei wurde gespeichert");
                    }
                }
            }
            //falls keine Original-Konfigdatei existiert, dann ist es auch nicht möglich in den gewünschten Pfad zu speichern
            else
            {
                MessageBox.Show("Konnte nicht in gewünschten Pfad gespeichert werden.");
            }


Hallo, ich versuche die erste Zeile einer Textdatei(gibt einen Pfad an) mit der Benutzereingabe in einer Textbox zu vergleichen.
Jedoch klappt meine Bedingung nicht, d.h. obwohl die Zeile aus der Textdatei und die Eingabe in der Textbox nicht übereinstimmen, erkennt das Programm das nicht und löscht auch nichts.
WO liegt hier mein Fehler?
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4798
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Do 24.10.13 11:54 
Sorry csharpfreak,

aber da können wir wohl auch nicht helfen. Da hilft nur Debuggen...

P.S: Statt dem Zusammensetzen von Pfaden mittels String-Konketation (+) [mal benutzt du "\\", dann mal wieder nicht] solltest du besser die Path-Klasse und dessen Combine-Methode benutzen.
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Do 24.10.13 11:55 
Zuviel Code um das als aussenstehender mal schnell zu durchschauen aber ich vermute mal du kommst bei deinen pfaden durcheinander. Bei diesem Code zum Beispiel

Zitat:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
//überprüft die Orginial-Konfigdatei, wenn diese existiert
if ( File.Exists(path + "\\" + file))
{
   //soll diese eingelesen werden
   string filetext = File.ReadAllText(path + filename);


ist entweder der Kommentar falsch oder der Code ist falsch bzw. zumindest aus meiner Sicht merkwürdig da der Pfad zur Datei 2 mal unterschiedlich ermittelt wird.
Wieso ermittelst du den Pfad nicht einfach nur einmal und dann mit einem eindeutigen Weg dann kann da recht wenig schief gehen;)

Übrigens bei Pfaden hilft dir wunderbar die Path Klasse aus System.IO. Und ein durchgängiges Namensschema sonst kommt mann da leicht durcheinander.
Bei mir wäre das zum Beispiel so. Ordner ist immer irgendwas mit "path" ein Filename immer "file" und nur der Pfad zu einem File also Ordner+Filename ein "path". Kannst du aber halten wie du willst nur mach es durchgängig.

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
string path = Path.Combine(dir, file);
if(File.Exists(path))
{
    string filetext = File.ReadAllText(path );
}