Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Problem beim Auslesen der vorhandenen COM-Schnittstellen (https://www.delphipraxis.net/128235-problem-beim-auslesen-der-vorhandenen-com-schnittstellen.html)

Helmi 26. Jan 2009 17:41


Problem beim Auslesen der vorhandenen COM-Schnittstellen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

ich verwende folgenden Code zum Auslesen der vorhandenen COM-Schnittstellen:
Delphi-Quellcode:
procedure COM_Liste(Liste: TStrings);
var
  Registry: TRegistry;

begin
  //Registry erzeugen
  Registry := TRegistry.Create;

  try
    //Registry beschreiben
    Registry.RootKey := HKEY_LOCAL_MACHINE;
    Registry.OpenKey('hardware\devicemap\serialcomm', false);

    //vorhandene Schnittstellen in Liste schreiben
    Registry.GetValueNames(Liste);

    //Registry schliessen
    Registry.CloseKey;
  finally
    //Registry löschen und freigeben
    FreeAndNil(Registry);
  end;
end;
Der Code liest auch aus der Registry - nur leider das Falsche.
Anbei ein Bild was, unter dem im Code stehenenden Key, zeigt was in meiner Registry steht.

Beim Auslesen wird die Spalte "Name" ausgelesen und nicht die Spalte "Wert".

Was muss man an dem Code verändern, damit die Spalte "Wert" ausgelesen wird?

(falls es notwendig ist: Vista Ultimate 32)

Helmi 26. Jan 2009 18:32

Re: Problem beim Auslesen der vorhandenen COM-Schnittstellen
 
Wenn alles so einfach wär - es fehlte noch eine Schleife:

Delphi-Quellcode:
procedure COM_Liste(Liste: TStrings);
var
  Registry: TRegistry;
  StringList: TStringList;
  i: Integer;

begin
  //Registry erzeugen
  Registry := TRegistry.Create;

  //StringList erzeugen
  StringList := TStringList.Create;

  try
    //Registry beschreiben
    Registry.RootKey := HKEY_LOCAL_MACHINE;
    Registry.OpenKey('hardware\devicemap\serialcomm', false);

    //vorhandene Einträge auslesen
    Registry.GetValueNames(StringList);

    //Werte auslesen und in Liste schreiben
    for i := 0 to Pred(StringList.Count) do
      Liste.Add(Registry.Readstring(StringList.Strings[i]));

    //Registry schliessen
    Registry.CloseKey;
  finally
    //Registry löschen und freigeben
    FreeAndNil(Registry);

    //StringList löschen und freigeben
    FreeAndNil(StringList);
  end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:44 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz