Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#1

Registry.WriteString > Typ in Registry falsch

  Alt 16. Aug 2011, 15:59
Delphi-Version: XE
Moin,

mir ist hier jetzt schon ein paar mal etwas aufgefallen.

Und zwar wird über TRegistry.WriteString ein String in HKEY_CURRENT_USER\Software\... abgespeichert.
Der müßte ja nun als REG_SZ in der Registry rumgammeln.

Wenn nun aber in dem string ein Integer drin ist (StrToInt), dann passiert es manchmal, daß sich in der Registry urplötzlich ein REG_DWORD befindet.

Es gibt auch nur die eine globale Speicherfunktion, welche auf diese Werte zugreift und diese arbeitet immer mit WriteString.
Zwar existieren noch ein paar Überladungen für Integer und Boolean, aber diese leiten nur über IntToStr/BoolToStr an Erstere weiter.
Somit kann/darf es eben nur Strings geben.


So, das Ergbnis/Problem ist dann allerdings, daß hier nun TRegistry.ReadString voll durchdreht.
ERegistryException > Ungültiger Datentyp für '...'


Das Ganze passiert in unregelmäßigen nicht nachvollziehbaren Abständen und scheinbar nur bei Stringwerten ala '0' oder '1'.
(jedenfalls enthalten alle gefundenen REG_DWORD nur 0 oder 1 )
$2B or not $2B
  Mit Zitat antworten Zitat