Mehrere Registry-Schlüssel
Mehrere Registry-Schlüssel finden
Da mit GetSetting() nur ein namentlich bekannter Schlüssel ermittelt werden kann, liefert die GetAllSettings()-Funktion ein Array aus allen Schlüssel-/Wert-Paaren der Sektion.
Es kann passieren, dass Ihr Code dem Benutzer relativ freie Eingaben in der Registry erlaubt. Dann können Sie später nicht wissen, wie die Schlüsselnamen hießen. Beispielsweise könnte der Benutzer Namen mit Adressen ermitteln, die Sie dort zwischenspeichern, damit er immer schnell darauf zugreifen kann.
Um das hier mit wenig Aufwand zu zeigen, erfolgt die Dateneingabe einfach mit einer InputBox()-Funktion zuerst für den Schlüsselnamen und anschließend für seinen Inhalt:
Sub SammleAdressen()
Dim strName As String
Dim strInhalt As String
strName = InputBox("Bitte Adressbezeichnung angeben")
If strName <> "" Then 'also nicht abgebrochen
strInhalt = InputBox("Bitte Adresse eintippen")
If strInhalt <> "" Then
SaveSetting m_cstrAppName, "Adressen", strName, strInhalt
End If
End If
End Sub
Ein paar Beispieldaten für die Adressen
Um nicht die bereits gespeicherten Optionen mit auszulesen, erfinden Sie hier einfach eine eigene Sektion Adressen, welche nur diese Werte enthält. Das erspart Ihnen das ansonsten eher mühsame Herausfiltern nur der gewünschten Adressen-Werte.
Mit den bisherigen Methoden wäre es nun nicht möglich, solche unbekannten Schlüsselnamen auszulesen. Dafür gibt es jedoch die GetAllSettings()-Funktion, welche solche Schlüsselnamen (und auch schon deren Inhalte!) ermittelt. Diese werden als zweidimensionales Array ausgelesen und müssen daher an eine Variant-Variable zurückgegeben werden:
Sub FindeAdressen() Dim varAdressen As Variant Dim strMerken As String Dim intZaehler As Integer varAdressen = GetAllSettings(m_cstrAppName, "Adressen") For intZaehler = 0 To UBound(varAdressen) strMerken = strMerken & vbCrLf & varAdressen(intZaehler, 0) & _ ": " & varAdressen(intZaehler, 1) Next MsgBox "Alle Adressen:" & vbCrLf & strMerken End Sub
In jeder Zeile des varAdressen-Arrays steckt jeweils ein Name/Wert-Paar, also in dessen erster Spalte der Name und in dessen zweiter Spalte der Wert. Da auch dieses Array Null-basiert ist, sind die zugehörigen Spaltennummern 0 und 1.
