Optionen einfach in der Registry speichern

In einem weiteren Beitrag namens Registryeintr ge f r VBA-Anwendungen (www.access-im-unternehmen.de/1508) haben wir dir grundlegenden Techniken f r das Speichern von Anwendungsdaten in der Registry vorgestellt. Im vorliegenden Beitrag gehen wir noch einen Schritt weiter und vereinfachen diesen Vorgang, sodass die Befehle zum Lesen und Schreiben der Daten noch einfacher werden. Das Verwalten von Informationen wie beispielsweise von Anwendungsdaten in der Registry ist eine Alternative zum Verwenden einer Optionentabelle oder auch einer Textdatei im Anwendungsverzeichnis. Je nachdem, an wie vielen Stellen man lesend oder schreibend auf diese Daten zugreift, m chte man den Zugriff auf die Registry m glichst einfach gestalten. Dazu stellen wir nachfolgend ein paar geeignete Werkzeuge vor. Die Befehle, die wir im oben genannten Beitrag vorgestellt haben, dienen dem Anlegen oder Aktualisieren von Eintr ge, zum Auslesen dieser Eintr ge oder zum L schen der Eintr ge. Die Befehle zum Schreiben und Lesen der Eintr ge haben bis zu vier Parameter. Die ersten beiden davon wiederholen sich vermutlich f r die meisten oder sogar f r alle Aufrufe. Die Parameter AppName, Section, Key und Setting braucht man normalerweise zum Anlegen, aber f r die Einstellungen einer einzigen Anwendung ist zumindest der Wert f r AppName immer gleich. Und wenn die Anwendung nicht allzu umfangreich ist, sodass man mehrere Bereiche f r die Registry-Eintr ge ben tigt, verwendet man auch immer den gleichen Namen f r den Parameter Section. In der L sung dieses Beitrag machen wir nicht viel anderes, als f r die immer gleich bleibenden Parameter Konstanten zu definieren und diese immer automatisch zu bergeben, wenn wir eine Einstellung vornehmen oder auslesen wollen. Au erdem m ssen wir nat rlich, um die Handhabung wirklich zu vereinfachen, noch ein paar neue Funktionen um die eigentlichen Aufrufe bauen, damit wir tats chlich nur die notwendigsten Daten angeben m ssen. Also legen wir in einem neuen, leeren Modul namens mdlRegistryApp zun chst einmal die folgenden beiden Konstanten an und hinterlegen f r diese gleich die entsprechenden Werte: Public Const cStrAppName As String = "MeineAnwendung" Public Const cStrSection As String = "MeinAnwendungsbereich" Einfaches Schreiben in die Registry Die einfachere der beiden Funktionen zum Schreiben und Lesen ist die zum Schreiben von Daten in die Registry. Hier brauchen wir neben AppName und Section einfach nur den Namen des Schl ssels und den Wert als Parameter anzugeben. Also bauen wir eine Funktion namens SaveAppSetting, die nur noch die Parameter strKey und strSetting entgegennimmt und damit und mit den Werten der beiden Konstanten den Aufruf der Anweisung SaveSetting durchf hrt: Public Sub SaveAppSetting(strKey As String, _ strSetting As String) SaveSetting cStrAppName, cStrSection, strKey, strSetting End Sub Wenn wir damit zum Beispiel drei Werte in die Registry schreiben wollen, erledigen wir das mit der folgenden Beispielprozedur. Diese ruft einfach nur drei Mal die Prozedur SaveAppSetting auf und bergibt Schl ssel und Wert: Public Sub Test_SaveAppsetting() SaveAppSetting "Mein Schl ssel", "Mein Wert" SaveAppSetting "Noch ein Schl ssel", "Noch ein Wert" SaveAppSetting "Letzter Schl ssel", "Letzter Wert" End Sub Das Ergebnis k nnen wir in der Registry im Zweig Computer\HKEY_CURRENT_USER\Software\VB and VBA Program Settings\MeineAnwendung\MeinAnwendungsbereich betrachten (siehe Bild 1). Bild 1: Frisch angelegte Registryschl ssel Einfaches Lesen aus der Registry Nun wollen wir diese Werte auch noch auf einfache Weise auslesen. Dazu erstellen wir eine weitere Prozedur namens GetAppSetting. Diese verwendet die folgenden drei Parameter: strKey: Erwartet den Namen des Schl ssels des auszulesenden Wertes. strDefault: Erwartet einen Standardwert, der zur ckgegeben werden soll, wenn es den mit strKey angegebenen Schl ssel noch nicht gibt. bolSaveIfNotExists: Wenn der Schl ssel noch nicht vorhanden oder leer ist, kann GetAppSetting diesen auch direkt anlegen. Dazu stellt man diesen Parameter auf True ein. Die Prozedur finden wir in Listing 1. Public Function GetAppSetting(strKey As String, Optional strDefault As String = "", Optional bolSaveIfNotExists As _ Boolean) As String Dim strTemp As String If bolSaveIfNotExists Then strTemp = GetSetting(cStrAppName, cStrSection, strKey) If Len(strTemp) = 0 Then SaveSetting cStrAppName, cStrSection, strKey, strDefault strTemp = strDefault End If Else strTemp = GetSetting(cStrAppName, cStrSection, strKey, strDefault) End If GetAppSetting = strTemp End Function Listing 1: Prozedur zum Auslesen eines Registrywertes Sie pr ft zun chst, ob der Parameter bolSaveIfNotExists den Wert True enth lt. Ist das der Fall, rufen wir mit GetSetting den Wert f r den mit strKey bergebenen Schl ssel ab, ohne den mit strDefault angegebenen Standardwert mit zu bergeben. Nur so k nnen wir feststellen, ob der Schl ssel noch nicht existiert oder leer ist. Enth lt strTemp danach eine Zeichenkette mit einer L nge von 0 Zeichen, schreiben wir den mit strDefault bergebenen Wert in einen neuen Schl ssel namens strKey. In diesem Fall tragen wir den Wert aus strDefault in die Variable strTemp ein, deren Wert wir sp ter als Funktionsergebnis zur ckgeben. Wenn bolSaveIfNotExists den Wert False enth lt, lesen wir einfach mit GetSetting den Wert f r den mit strKey angegebenen Schl ssel aus und speichern das Ergebnis in strTemp. Sollte das Ergebnis leer sein, erhalten wir stattdessen den Inhalt von strDefault als Funktionsergebnis. Zum Testen dieser Funktion k nnen wir die folgende Beispielprozedur nutzen. Die ersten drei Anweisungen fragen die mit dem vorherigen Beispiel angelegten Eintr ge ab. Die vierte fragt einen noch nicht vorhandenen Schl ssel ab und soll den Wert Test zur ckgeben, falls der Schl ssel nicht vorhanden oder leer ist. Daf r wird aber kein Schl ssel angelegt. Die letzte soll einen Schl ssel neu anlegen, sofern dieser noch nicht vorhanden ist: Public Sub Test_GetAppSetting() Debug.Print GetAppSetting("Mein Schl ssel") Debug.Print GetAppSetting("Noch ein Schl ssel") Debug.Print GetAppSetting("Letzter Schl ssel") Debug.Print GetAppSetting("Test", "Test") Debug.Print GetAppSetting("Neuer Schl ssel", _ "Neuer Wert", True) End Sub Schl ssel l schen Schlie lich wollen wir bestehende Schl ssel auch noch auf vereinfachte Art l schen wollen. Dazu nutzen wir die folgende Prozedur: Public Function DeleteAppSetting(strKey As String) DeleteSetting cStrAppName, cStrSection, strKey End Function Um alle zuvor angelegten Schl ssel wieder zu l schen, k nnen wir die folgenden Anweisungen nutzen: Public Sub Test_DeleteAppSetting() Debug.Print DeleteAppSetting("Mein Schl ssel") Debug.Print DeleteAppSetting("Noch ein Schl ssel") Debug.Print DeleteAppSetting("Letzter Schl ssel") Debug.Print DeleteAppSetting("Test") Debug.Print DeleteAppSetting("Neuer Schl ssel") End Sub Dies l scht alle vorhandenen angegebenen Elemente, wirft aber einen Fehler f r das zuvor nicht angelegte Element Test. Um diesen Fall einfach zu umgehen, k nnten wir vor der DeleteSetting-Anweisung die Anweisung On Error Resume Next einf gen. Zusammenfassung und Ausblick Mit den hier vorgestellen Prozeduren und Funktionen lassen sich das Schreiben, Lesen und L schen von Registryeintr gen im speziell f r VBA-Anwendungen vorgesehenen Bereich vereinfachen, insbesondere dadurch, dass viel weniger Parameter bergeben werden m ssen. The post Optionen einfach in der Registry speichern appeared first on Access im Unternehmen.

zum Artikel gehen

PowerShell Registry ein mächtiges Duo

Die Windows-Registrierung ist eine zentrale Datenbank, in der Windows Informationen über Systemeinstellungen, installierte Programme und Hardwarekonfigurationen speichert. Mit PowerShell können Sie die Windows-Registrierung einfach bearbeiten. Dementsp

zum Artikel gehen

Zielgruppenabfrage speichern

Mittels Zielgruppen lassen sich Daten auswerten und individuelle Gruppen zusammenstellen Damit die Zielgruppe nicht immer wieder erstellt werden können, lassen sich die erstellen Abfragen speichern

zum Artikel gehen

PDF Formular für Reader erstellen

Habe ich ein Formular in Adobe InDesign professionell gestaltet und im Adobe Acrobat Pro erweitert oder bearbeitet, dann lässt es sich zwar auch in der Freeware Adobe Acrobat Reader öffnen, aber nicht bearbeitet (ausgefüllt) speichern.Hat mein Kunde aber

zum Artikel gehen

Refresh ENVironment Variables

The refreshenv-CMD/Powershell-Command updates all Environment-Variables e.g. after installing a new software package. C:\WINDOWS\system32>refreshenv Refreshing environment variables from registry for cmd.exe. Please wait...Finished.. The post Refres

zum Artikel gehen

Mobile Ansicht verfügbar: Ob mit Smartphone oder Tablet, mal eben den Spielplan aufrufen und ein Match speichern...

Ob mit Smartphone oder Tablet, mal eben den Spielplan aufrufen und ein Match speichern, ab heute auch mit mobilen Geräten optimal nutzbar.

zum Artikel gehen