====== Registry-Tipp ====== ====== **Eindimensionales Feld in der Registry ablegen und wieder auslesen** ====== Will man ein eindimensionales Array in der Registry ablegen, ist dies sehr aufwendig. Es muss jedes Element einzeln abgespeichert und beim Auslesen wieder einzeln ausgelesen und zu einem Array zusammengesetzt werden.\\ In einem VB-Skript ist es einfacher das Feld mit dem **join-Befehl** in einen String zu verwandeln und diesen in der Registry abzuspeichern. Wenn man den String wieder ausliest, lässt sich das Array mit dem **split-Befehl** auf einfache Weise wieder rekonstruieren.\\ \\ Es gibt allerdings das Problem, dass das Array nicht mit einem **Dim-** oder **Redim-Befehl** erstellt sein darf. Da muss ein wenig getrickst werden, indem man das Array anfangs auch mit dem **split-Befehl** aus einem String, der nur aus Trennzeichen besteht, erstellt. Die Anzahl der Trennzeichen muss dem gewünschten höchsten Indexwert des zu erstellenden Arrays entsprechen.\\ \\ **Beispiel 1:**\\ const regschluessel = "JoinTest" Dim zeichenfolge,Feld 'als Trennzeichen wird hier das Pipezeichen "|" verwendet '### aus der Registry auslesen zeichenfolge = FF_GetProfile(regschluessel,"zeichenfolge") if len(zeichenfolge) = 0 then zeichenfolge = "|||" '3 Trennzeichen für Feld(0) bis Feld(3) end if Feld = split(zeichenfolge,"|") '## Feld beliebig füllen oder Inhalte ändern, z.B.: Feld(0) = "A" Feld(1) = "B" Feld(2) = "C" Feld(3) = "D" '### in die Registry schreiben zeichenfolge = join(Feld,"|") FF_WriteProfile regschluessel,"zeichenfolge",zeichenfolge Man kann aber auch mit einem zweiten Feld arbeiten, im nächsten Beispiel mit Feld1, in das die der Registry entnommenen Werte übertragen werden.\\ \\ **Beispiel 2:**\\ const regschluessel = "JoinTest1" Dim zeichenfolge,n,Feld,Feld1(3) 'als Trennzeichen wird hier das Pipezeichen "|" verwendet '### aus der Registry auslesen zeichenfolge = FF_GetProfile(regschluessel,"zeichenfolge") if len(zeichenfolge) > 0 then Feld = split(zeichenfolge,"|") for n = 0 to ubound(Feld) Feld1(n) = Feld(n) next end if for n = 0 to 3 : Msgbox Feld1(n) : next '## Feld1 beliebig füllen oder Inhalte ändern, z.B.: Feld1(0) = "A" Feld1(1) = "B" Feld1(2) = "C" Feld1(3) = "D" '### in die Registry schreiben zeichenfolge = join(Feld1,"|") FF_WriteProfile regschluessel,"zeichenfolge",zeichenfolge Wenn man obige Beispiele testweise ausführt, sollte man nicht vergessen, die erzeugten Schlüssel in der Registry wieder zu löschen. Zu finden sind sie unter\\ **HKEY_CURRENT_USER\Software\Joachim Koopmann Software\FixFoto\Script\**\\ \\ **Hinweis:**\\ Angewendet wurde die Methode nach **Beispiel 1** im Skript "//ScaleAll//" zum Sichern der Parameter für verschiedene Schärfungsmethoden in der Registry