Hallo Leute.
Hab schon wieder ein Problem. 🙁
Diesmal aber eher allgemeiner Natur. 😁
Ich lese mit folgendem Code Bios-Daten in Variablen ein:
try
{
foreach(ManagementObject mo in queryCollection)
{
_BiosCharacteristics = ((UInt16[])mo["BiosCharacteristics"]);
_BuildNumber = mo["BuildNumber"].ToString(); // <-- Hier ist Zeile 76
_Caption = mo["Caption"].ToString();
_CodeSet = mo["CodeSet"].ToString();
_CurrentLanguage = mo["CurrentLanguage"].ToString();
_Description = mo["Description"].ToString();
_IdentificationCode = mo["IdentificationCode"].ToString();
_InstallableLanguages = ((UInt16)mo["InstallableLanguages"]);
_InstallDate = ((DateTime)mo["InstallDate"]);
_LanguageEdition = mo["LanguageEdition"].ToString();
_Manufacturer = mo["Manufacturer"].ToString();
_ListOfLanguages = ((string[])mo["ListOfLanguages"]);
_Name = mo["Name"].ToString();
_OtherTargetOS = mo["OtherTargetOS"].ToString();
_PrimaryBIOS = ((bool)mo["PrimaryBIOS"]);
_ReleaseDate = ((DateTime)mo["ReleaseDate"]);
_SerialNumber = mo["SerialNumber"].ToString();
_SMBIOSBIOSVersion = mo["SMBIOSBIOSVersion"].ToString();
_SMBIOSMajorVersion = ((UInt16)mo["SMBIOSMajorVersion"]);
_SMBIOSMinorVersion = ((UInt16)mo["SMBIOSMinorVersion"]);
_SMBIOSPresent = ((bool)mo["SMBIOSPresent"]);
_SoftwareElementID = mo["SoftwareElementID"].ToString();
_SoftwareElementState = ((UInt16)mo["SoftwareElementState"]);
_Status = mo["Status"].ToString();
_TargetOperatingSystem = ((UInt16)mo["TargetOperatingSystem"]);
_Version = mo["Version"].ToString();
}
InitBiosCharacteristicsValues();
BiosInfoConsoleOutput();
}
catch(Exception e)
{
Console.WriteLine(e.ToString());
}
Mit den meisten funktioniert das auch. Allerdings sind nicht immer Informationen vorhanden, was zur Folge hat das einigen Variablen NICHTS zugewiesen werden kann. Ich bekomme folgende Fehlermeldung:
System.NullReferenceException: Object reference not set to an instance of an obj
ect.
at SystemInfos.Bios.GetBiosInfo() in c:\dokumente und einstellungen\olli\eige
ne dateien\visual studio projects\wmi_tests\systeminfos\bios.cs:line 76
Wenn ich das richtig verstehe, ist es nicht möglich eine Objektreferenz auf Null zu setzen.(logisch 😉)
Aber was kann ich dagegen tun??? Vorher prüfen, aber wie???
Hab da iregendwie eine tierische Denkblockade.
PLZ HELP
SGT_BOB
*************************
Ich bin root, ich darf das... 😜
root>_
*************************
Hallo!
So kommst du dein Problem in den Griff:
_BuildNumber = mo["BuildNumber"] == null ? "" : mo["BuildNumber"].ToString();
Wenn mo["BuildNumber"] nicht existiern, dann bekommst du einen Leerstring anstatt einer Null-Referenz.
Man kann schon null zuweisen, jedoch kannst du dann nicht mehr auf ToString() zugreifen, weil man ja auf nichts zugreifen kann, was nicht existiert.
mfg
Hey Danke.
Werds mal so probieren. Hab
s jetzt erstmal so gemacht:
...
if(mo["BuildNumber"] != null)
_BuildNumber = mo["BuildNumber"].ToString();
...
Funzt auch. Aber deine Art ist eleganter. 8)
Vielen Dank.
*************************
Ich bin root, ich darf das... 😜
root>_
*************************