Autor Beitrag
huuuuuh
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 665
Erhaltene Danke: 19

win xp, (win vista), win 7
VS 2008 Express Edition, VS 2010 Express Edition, VS 2010 Professionell
BeitragVerfasst: Fr 24.12.10 13:49 
ich programmiere grade ein kleines tool, welches automatisch alle paar sekunden bilder konvertiert. eigentlich keine große sache, nur schmeißt mir C# jetzt NullReferenceExceptions hin, welche da meiner meinung nach nich auftreten dürften
und zwar in diesen 3 zeilen: (in allen dreien)
ausblenden C#-Quelltext
1:
2:
3:
chg_img_size=false;
del_orig=false
converted=new List<string>();

die variablen, denen etwas zugewiesen werden soll, sind NULL. das ist klar, aber mir erschließt sich nicht, warum C# diesen variablen keinen wert zuweisen will... hab auch versucht, die bool-variablen mit new- zu initialisieren, aber auch das funktionierte nicht.
einer ne idee?

ps. diese 3 zeilen stehen im Konstruktor einer Klasse, welche für Einstellungen zuständig ist
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Fr 24.12.10 13:53 
user profile iconhuuuuuh hat folgendes geschrieben Zum zitierten Posting springen:
die variablen, denen etwas zugewiesen werden soll, sind NULL.

Wieso können chg_img_size und del_orig null sein? Hast du die als object deklariert?

An sich ist an den drei Zeilen nichts auszusetzen, kannst du vielleicht die ganze Klasse oder das Projekt hochladen?
huuuuuh Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 665
Erhaltene Danke: 19

win xp, (win vista), win 7
VS 2008 Express Edition, VS 2010 Express Edition, VS 2010 Professionell
BeitragVerfasst: Fr 24.12.10 14:01 
keine ahnung. chg_img_size und del_orig sind ganz normale bool-variablen. und ab und zu werden die mir als null angezeigt. nicht immer, auch das ist seltsam...
hier die klasse:
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:
public class settings
    {
        public settings()
        {
            scn_int = 60;
            scn_dir = "";
            
            con_img_ext[0] = ".jpg";
           
            chg_img_size=false;
            img_width=800;
            img_height=600;
            del_orig=false
            converted=new List<string>();
        }
        private int scn_int;

        public int Scn_int
        {
            get { return scn_int; }
            set { scn_int = value; }
        }
        private string scn_dir;

        public string Scn_dir
        {
            get { return scn_dir; }
            set { scn_dir = value; }
        }
        private string[] con_img_ext;

        public string[] Con_img_ext
        {
            get { return con_img_ext; }
            set { con_img_ext = value; }
        }
        private List<string> converted;

        public List<string> Converted
        {
            get { return converted; }
            set { converted = value; }
        }
        private bool chg_img_size;

        public bool Chg_img_size
        {
            get { return chg_img_size; }
            set { chg_img_size = value; }
        }
        private int img_width;

        public int Img_width
        {
            get { return img_width; }
            set { img_width = value; }
        }
        private int img_height;

        public int Img_height
        {
            get { return img_height; }
            set { img_height = value; }
        }
        private bool del_orig;

        public bool Del_orig
        {
            get { return del_orig; }
            set { del_orig = value; }
        }
    }
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Fr 24.12.10 14:13 
user profile iconhuuuuuh hat folgendes geschrieben Zum zitierten Posting springen:
keine ahnung. chg_img_size und del_orig sind ganz normale bool-variablen. und ab und zu werden die mir als null angezeigt. nicht immer, auch das ist seltsam...

Das ist in der Tat höchst seltsam, denn Felder vom Typ bool können gar nicht nie null sein - denn der interne Wert für null (also 0) wird bei Booleans als false ausgewertet. Deshalb sind Boolean-Felder zu Beginn auch automatisch mit false initialisiert. Mein Debugger zeigt übrigens auch false an.

user profile iconhuuuuuh hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden C#-Quelltext
 
8:
/* ... */
            con_img_ext[0] = ".jpg";

Hier knallt es, und zwar zu Recht: Das Feld con_img_ext wurde noch nicht initialisert, ist also null. Du musst es vorher mit con_img_ext = new string[1] oder einer anderen Anzahl von Elementen initialisieren. Mein Debugger zeigt übrigens diese Zeile als Fehlerquelle an, nicht eine der drei von dir genannten.

Dein Visual Studio scheint mir nicht mehr ganz in Ordnung zu sein... Vielleicht hilft eine Neuinstallation?

PS: Die Namenskonventionen solltest du dir nochmal anschauen. Typbezeichner schreibt man groß, und Unterstriche sind eigentlich generell verboten ;)
huuuuuh Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 665
Erhaltene Danke: 19

win xp, (win vista), win 7
VS 2008 Express Edition, VS 2010 Express Edition, VS 2010 Professionell
BeitragVerfasst: Fr 24.12.10 14:21 
ah, verdammt, dummer fehler :( werde wohl nie lernen, das man Arrays vorher initialisieren muss...
naja, Danke aufjedenfall, auch für den Link. mit Namenskonventionen hab ichs (noch) nich so ;) wünsch dir frohe weihnachten