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);
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
Danke, das war's schon. Hätte ich eigentlich selbst drauf kommen müssen...
Das darf dann aber nicht null sein, sondern ist überhaupt nicht definiert.