Laden...

Gültigkeit von array

Erstellt von kstanger vor einem Jahr Letzter Beitrag vor einem Jahr 253 Views
K
kstanger Themenstarter:in
99 Beiträge seit 2022
vor einem Jahr
Gültigkeit von array

Hallo allerseits,
ich glaube, ich verstehe die Basics nicht. 🙁


            if (File.Exists(Globals.DateiPfad + "Ledsteuerung_Settings.txt"))
            {
                string jsonString = File.ReadAllText(Globals.DateiPfad + "Ledsteuerung_Settings.txt");
                Presetting[] Presettings = JsonSerializer.Deserialize<Presetting[]>(jsonString);
                ListBoxProfil.Items.Clear();
                for (int loop = 0; loop < Presettings.Length; loop++)
                {
                    ListBoxProfil.Items.Add(Presettings[loop].ProfilName);
                    if (Presettings[loop].LastOne == 1)
                    {
                        TextBoxPath.Text = Presettings[loop].Pfad;
                        TextBoxRGB.Text = Presettings[loop].RGBDatei;
                        TextBoxEvent.Text = Presettings[loop].EventDatei;
                        TextBoxTiming.Text = Presettings[loop].TimingDatei;
                        UpDownMaxRGB.Value = Presettings[loop].RGBMaxHell;
                        UpDownAnzLed.Value = Presettings[loop].AnzLed;
                        UpDownAnzRelais.Value = Presettings[loop].AnzRelais;
                        UpDownTimeLapse.Value = Presettings[loop].Zeitraffer;
                        ListBoxProfil.SelectedIndex = loop;
                    }
                }
                MessageBox.Show("in if: " + Presettings[0].RGBDatei);

            }
            MessageBox.Show(Presettings[0].RGBDatei);


(um Globals und Pfadkombination kümmere ich mich später)
Presettings[0] wird duch den Deserialisierer gefüllt. In der if-Anweisung funktioniert die MessageBox. Sobald ich aus dem if raus bin, ist Presetting = null.
Das ist sicherlich richtig, aber ich verstehe das nicht.
Hilfe!
Halt, stop - ich hab's: wenn die if-Bedingung nicht erfüllt ist, muss Presettings = null sein, da ja nix gefüllt wird.

Jetzt habe ich einen else-Zweig erstellt, aber trotzdem ist Presettings = null:


            else
            {
                Presettings = new Presetting[]
                 {
                    new Presetting(@"C:\users\kstan\source\LED\", "rgbDummy.txt", "eventDummy.txt", "timingDummy.txt", 255, 40, 8, 60, "DummyProfil", 1)
                 };
            }
            MessageBox.Show(Presettings[0].RGBDatei);


Karl Stanger
A
764 Beiträge seit 2007
vor einem Jahr

Hallo kstanger

Das liegt daran, dass du Presettings im Scope der if-Abfrage definierst.

Der Scope geht von der { bis zur } der if-Abfrage. Alles was innerhalb definiert wird, ist ausserhalb nicht verfügbar.

Mach das mal so:


Presetting[] presettings;
if (..)
{
  ..
  presettings = JsonSerializer.Deserialize<Presetting[]>(jsonString);
  ..

Gruß Alf

PS: Les mal das: C# Coding Conventions

K
kstanger Themenstarter:in
99 Beiträge seit 2022
vor einem Jahr

Danke, das war's schon. Hätte ich eigentlich selbst drauf kommen müssen...

Karl Stanger
C
2.121 Beiträge seit 2010
vor einem Jahr

Das darf dann aber nicht null sein, sondern ist überhaupt nicht definiert.