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:

  1. const regschluessel = "JoinTest"
  2. Dim zeichenfolge,Feld
  3. 'als Trennzeichen wird hier das Pipezeichen "|" verwendet
  4.  
  5. '### aus der Registry auslesen
  6. zeichenfolge = FF_GetProfile(regschluessel,"zeichenfolge")
  7. if len(zeichenfolge) = 0 then
  8. zeichenfolge = "|||" '3 Trennzeichen für Feld(0) bis Feld(3)
  9. end if
  10. Feld = split(zeichenfolge,"|")
  11.  
  12. '## Feld beliebig füllen oder Inhalte ändern, z.B.:
  13. Feld(0) = "A"
  14. Feld(1) = "B"
  15. Feld(2) = "C"
  16. Feld(3) = "D"
  17.  
  18. '### in die Registry schreiben
  19. zeichenfolge = join(Feld,"|")
  20. 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:

  1. const regschluessel = "JoinTest1"
  2. Dim zeichenfolge,n,Feld,Feld1(3)
  3. 'als Trennzeichen wird hier das Pipezeichen "|" verwendet
  4.  
  5. '### aus der Registry auslesen
  6. zeichenfolge = FF_GetProfile(regschluessel,"zeichenfolge")
  7. if len(zeichenfolge) > 0 then
  8. Feld = split(zeichenfolge,"|")
  9. for n = 0 to ubound(Feld)
  10. Feld1(n) = Feld(n)
  11. next
  12. end if
  13.  
  14. for n = 0 to 3 : Msgbox Feld1(n) : next
  15.  
  16. '## Feld1 beliebig füllen oder Inhalte ändern, z.B.:
  17. Feld1(0) = "A"
  18. Feld1(1) = "B"
  19. Feld1(2) = "C"
  20. Feld1(3) = "D"
  21.  
  22. '### in die Registry schreiben
  23. zeichenfolge = join(Feld1,"|")
  24. 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