xGetRegistryKey(HKEY_LOCAL_MACHINE, '\Software\
ODBC\
ODBC.INI\
ODBC Data Sources', ListBox1);
(…)
(* Die Funktion xGetRegistryKey liefert (in dem Sender), anhand des Hauptschlüssels
für das TRegistry-Objekt (hier sRootKey --> z.B.: HKEY_LOCAL_MACHINE)
und dem Registry-Eintrag Verzeichnisses (sRootPath), alle Einträge zurück die
sich in dem so beschriebenem Schlüssel befinden.
Als Sender kann man hier TMemo, TListBox, TComboBox und eine TStringList eingeben.
Allerdings muss eine StringListe vorher erzeugt werden.
Bei erfolgreicher Ausführung von Registry.OpenKey hat diese Funktion den Rückgabe Wert = TRUE
_________________________________
PROGRAMMIERUNG:
Hier ein Beispiel wie man alle Datenquellen-
ODBC-Einträge ablesen kann:
1.) Zuweisung für TListBox
xGetRegistryKey(HKEY_LOCAL_MACHINE, '\Software\
ODBC\
ODBC.INI\
ODBC Data Sources', ListBox3);
2.) Hier werden die Ergebnisse an eine TSTringList übergeben. Nun dann kann man
solche StringListe belibig weiter verwenden.
TRY
StringList := TStringList.Create;
xGetRegistryKey(HKEY_LOCAL_MACHINE, '\Software\
ODBC\
ODBC.INI\
ODBC Data Sources', StringList);
ListBox3.Items.AddStrings(StringList);
FINALLY
StringList.Free;
END;
*)
FUNCTION xGetRegistryKey(sRootKey : HKey; sRootPath : STRING; Sender : TObject) : Boolean;
VAR
Registry: TRegistry;
BEGIN
Result := FALSE;
Registry := NIL;
IF Sender Is TListBox THEN
(Sender As TListBox).Items.Clear;
IF Sender Is TComboBox THEN
(Sender As TComboBox).Items.Clear;
IF Sender Is TMemo THEN
(Sender As TMemo).Clear;
TRY
// Object für die Regiestrierdatenbank von Windows wird erzeugt
Registry := TRegistry.Create;
// Die Eigenschaft bestimmt in einer Anwendung den Hauptschlüssel
Registry.RootKey := sRootKey; // für das TRegistry-Objekt.
// Die Methode OpenKey öffnet den angegebenen Schlüssel.
IF NOT Registry.OpenKey(sRootPath, FALSE) THEN
Exit;
IF Sender Is TListBox THEN
BEGIN
Registry.GetValueNames((Sender As TListBox).Items);
(Sender As TListBox).Sorted := TRUE;
END;
IF Sender Is TComboBox THEN
BEGIN
Registry.GetValueNames((Sender As TComboBox).Items);
(Sender As TComboBox).Sorted := TRUE;
END;
IF Sender Is TMemo THEN
Registry.GetValueNames((Sender As TMemo).Lines);
IF Sender Is TStringList THEN
BEGIN
Registry.GetValueNames(Sender As TStringList);
(Sender As TStringList).Sorted := TRUE;
END;
Result := TRUE;
FINALLY
Registry.Free;
END;
END;