Zitat von
Delphi-Noobie:
Ich hoffe, dass es so richtig ist und würde mich freuen, wenn ihr den Code auch mal ausprobiert und sagt ob nur die Grafikkarte angezeigt wird!
Bei dem Durcheinander, das du angerichtet hast, wär´s ein Wunder:
Zitat:
Delphi-Quellcode:
if Reg.ValueExists('FriendlyName') then
S := Reg.ReadString('FriendlyName')
else if reg.ReadString('Class') = 'Display' then begin //<- Display wegen Grafikkarte
if reg.ValueExists('ParentIDPrefix') then begin //<- Das war bei mir nur im
if Reg.ValueExists('DeviceDesc') then // 1. ordner vorhanden, deswegen
S := Reg.ReadString('DeviceDesc') // hab ich es hier eingebaut
end
end
else
S := '';
Warum hast du das nicht so gelassen wie es vorher war? Ich fürchte, den Sinn dieser Zeilen hast du nämlich nicht verstanden. Der Code vom Alten Mann ging von folgenden Bedingungen aus:
Zitat:
Den Eintrag mit dem Namen "FriendlyName" lesen. Wenn das Ergebnis ein Leerstring ist (weil der Eintrag vielleicht nicht existiert!), dann den Eintrag "DeviceDesc" lesen.
Schau dir seinen Code noch mal an!
Zitat von
Alter Mann:
Delphi-Quellcode:
S := Items.ReadString('FriendlyName');
if S = '' then
S := Items.ReadString('DeviceDesc');
if ListBox1.Items.IndexOf(S) = -1 then ListBox1.Items.Add(S);
Ich hab´s bei mir nur so geändert, dass geprüft wird, ob der jeweilige Eintrag vorhanden ist, und abhängig davon wird er dann ausgelesen:
Delphi-Quellcode:
// existiert "FriendlyName"?
if Reg.ValueExists('FriendlyName') then
// Ja, dann lesen
S := Reg.ReadString('FriendlyName')
// bzw. existiert "DeviceDesc"?
else if Reg.ValueExists('DeviceDesc') then
// Ja, dann eben den auslesen
S := Reg.ReadString('DeviceDesc')
// nix davon ist da, so ein Sch***
else
S := '';
Und nur wenn die Stringvariable also etwas enthält, wird der Wert in die Listbox eingetragen.
Da du es jetzt auf Grafikkarten abgesehen hast, fragst du
vor dem Eintragen in die Listbox (oder wohin auch immer) ab, ob der "Class"-Eintrag den Wert "DISPLAY" enthält. Die Prüfung von "ParentIDPrefix" würde ich lassen, den Eintrag gibt´s bei mir bspw. nicht - jedenfalls nicht im Schlüssel meiner GraKa.
Bei mir wird der Wert "DISPLAY" übrigens groß geschrieben. Du solltest also beim Auslesen und Prüfen des Wertes dafür sorgen, dass die Schreibweise
nicht berücksichtigt wird.