Autor Beitrag
Csharp-programmierer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 696
Erhaltene Danke: 10

Windows 8.1
C# (VS 2013)
BeitragVerfasst: So 20.03.16 12:50 
Hallo meine lieben.
Ich habe mal wieder ein Problem. Unszwar habe ich eine Klasse HTML und eine Klasse mit einer Form Tags. Die Klass Tags bedient sozusagen die Klasse Tags.

Hier die KLasse HTML:
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:
public class HTML
    {
        public List<string> html { get; set; }

        public HTML()
        {
            html = new List<string>();
        }

        public void Speichern(string Pfad)
        {
            try
            {
                using (FileStream file = new FileStream(Pfad, FileMode.Create))
                {
                    XmlSerializer s = new XmlSerializer(typeof(HTML));
                    s.Serialize(file, this);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
        public static HTML Laden(string Pfad)
        {
            try
            {
                using (FileStream file = new FileStream(Pfad, FileMode.Open))
                {
                    XmlSerializer s = new XmlSerializer(typeof(HTML));
                    return (HTML)s.Deserialize(file);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                return null;
            }
        }
    }


Die KLasse Tags:
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:
HTML _html;

        public Tags()
        {
            InitializeComponent();
            _html = HTML.Laden(Path.Combine(io.pHTML, "Tags.xml"));
        }

        private void button1_Click(object sender, EventArgs e)
        {
            foreach (string s in _html.html)
            {
                MessageBox.Show(s);
                // Soll den Inhalt der Liste wiedergeben
            }
        }

        private void button33_Click(object sender, EventArgs e)
        {
            try
            {
                if (this.comboBox1.SelectedIndex == 0)
                {
                    _path = Path.Combine(io.pHTML, "Tags.xml");
                    _html.html.Add("Hallo");
                }

                _html.Speichern(_path);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }


Immer, wenn ich auf eine Propertie von _html zugreifen möchte, kommt der Fehler: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt. Ich habe doch aber ein Objekt von HTML erzeugt. Aber warum kommt dann dieser Fehler?

Moderiert von user profile iconTh69: Titel geändert (war "Fehlermeldung")

_________________
"Wer keinen Sinn im Leben sieht, ist nicht nur unglücklich, sondern kaum lebensfähig" - Albert Einstein
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: So 20.03.16 18:43 
Zitat:
Immer, wenn ich auf eine Propertie von _html zugreifen möchte, kommt der Fehler: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt. Ich habe doch aber ein Objekt von HTML erzeugt. Aber warum kommt dann dieser Fehler?


Es wäre an der Zeit ein wenig Debugging zu üben. Wird den der Code der _html zuweist auch aufgerufen? Wenn du dir im Debugger die Stelle anschaust an der es knallt ist dann _html null oder die html Property von _html?
Csharp-programmierer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 696
Erhaltene Danke: 10

Windows 8.1
C# (VS 2013)
BeitragVerfasst: So 20.03.16 20:32 
Also wenn ich der Liste etwas hinzufügen möchte (_html.html.Add("Text")) kommt der Fehler und wenn ich den Inhalt der Liste abrufen möchte. Es wird aber gesagt, dass die XML Datei nicht gefunden werden kann. Liegt es vielleicht daran? Aber über die Speichern Methode müsste ja eigentlich die Datei erstellt werden

Moderiert von user profile iconTh69: C#-Tags hinzugefügt

_________________
"Wer keinen Sinn im Leben sieht, ist nicht nur unglücklich, sondern kaum lebensfähig" - Albert Einstein
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Mo 21.03.16 10:43 
Also den Debugger sollte man zu bedienen wissen, s. z.B. [Artikel] Debugger: Wie verwende ich den von Visual Studio?

Wenn also die Fehlermeldung erscheint, welchen Wert gibst du dann in der Methode Laden zurück?!!

PS: Die eigentliche Fehlermeldung ist eine NullReferenceException...
Und diese ist immer ein Programmierfehler - jeder Zugriff auf ein null-Objekt muß vorher abgefangen werden!
Csharp-programmierer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 696
Erhaltene Danke: 10

Windows 8.1
C# (VS 2013)
BeitragVerfasst: Di 22.03.16 20:36 
Ich habe jetzt eine Bestätigung, dass das Objekt HTML null ist. Ich denke aber man kann diesem Objekt dann trotzdem etwas zuweisen?

_________________
"Wer keinen Sinn im Leben sieht, ist nicht nur unglücklich, sondern kaum lebensfähig" - Albert Einstein
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Di 22.03.16 20:40 
HTML ist eine Klasse und kann nicht null sein.

Meinst Du _html? Wenn das auch nach dem Konstruktor von Tags noch null ist, solltest Du mal in der Laden-Methode von HTML debuggen, warum die nicht das tut, was sie soll.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".