AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Registry.WriteString > Typ in Registry falsch
Thema durchsuchen
Ansicht
Themen-Optionen

Registry.WriteString > Typ in Registry falsch

Ein Thema von himitsu · begonnen am 16. Aug 2011 · letzter Beitrag vom 16. Aug 2011
Antwort Antwort
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
S.pas.s

Registriert seit: 16. Aug 2011
5 Beiträge
 
Delphi XE Professional
 
#2

AW: Registry.WriteString > Typ in Registry falsch

  Alt 16. Aug 2011, 16:40
Ich sehe immer ein REG_SZ. Ich habs mit 12345, 0x12345, 00012345 ausprobiert. Mit WriteString kriege ich immer REG_SZ - kein REG_DWORD.
Vielleicht gibt es noch andere Stellen im Program, welche in die registry schreiben?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Registry.WriteString > Typ in Registry falsch

  Alt 16. Aug 2011, 17:59
Ich sehe immer ein REG_SZ. Ich habs mit 12345, 0x12345, 00012345 ausprobiert. Mit WriteString kriege ich immer REG_SZ - kein REG_DWORD.
Vielleicht gibt es noch andere Stellen im Program, welche in die registry schreiben?
Nee, es gibt keine anderen Stellen.
Und genau das ist ja das Problem ...
Eigentlich sollte es funktionieren und immer REG_SZ rauskommen,
aber alle paar Wochen/Monate ist der Wert plötzlich ein REG_DWORD.

Ist mir jetzt schon bestimmt 3-4 Mal passiert, daß ich auf diese Exception traf und vorhin hatte ich noch 5 andere Werte in der Registry entdeckt, wo das auch falsch ist.



Ach ja, Delphi XE + Windows Server 2008 R2 + MSTSC.
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

AW: Registry.WriteString > Typ in Registry falsch

  Alt 16. Aug 2011, 18:04
Schreibt eventuell noch ein anderes Programm an die Stelle?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Registry.WriteString > Typ in Registry falsch

  Alt 16. Aug 2011, 18:04
Und woher weißt Du, daß Du bzw. Dein Programm der einzige ist, der dort schreibt und liest?
z.B. Virenscanner treiben sich auch in der Registry herum, und wenn die "Fehler" berichtigen?

Gruß
K-H

(zwei Dumme ein Gedanke)
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Registry.WriteString > Typ in Registry falsch

  Alt 16. Aug 2011, 18:17
Ich weiß nichtmal, ob hier ein Virenscanner drauf ist, aber ich glub nicht. (Cheffe ist nun auch schon weg)

Sind nur Windows Firewall und Windows Defender drauf ... persönlich hab ich da noch nichts mitbekommen oder was gehört, daß es damit solche Probleme gibt.
$2B or not $2B
  Mit Zitat antworten Zitat
S.pas.s

Registriert seit: 16. Aug 2011
5 Beiträge
 
Delphi XE Professional
 
#7

AW: Registry.WriteString > Typ in Registry falsch

  Alt 16. Aug 2011, 18:25
Um dem Problem nachzugehen, müsstest Du einen Wächter schreiben, der alle paar Minuten den Registrywert ausliest (mit try .. except .. end) und eine Warnung abgibt, sobald der REG_SZ-Status geändert wurde.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Registry.WriteString > Typ in Registry falsch

  Alt 16. Aug 2011, 18:29
Moin Himitsu,

ich weiss ja nicht, wie oft das Programm in den Key schreibt, aber auf einmal wieder der falsche Typ drinsteht, könntest Du ja mal auslesen, wann der Key das letzte Mal geändert wurde.
Damit könntest Du dann evtl. ermitteln, ob es Dein Programm ist, oder ein anderes.
Der Typ dürfte sich kaum spontan ändern, sondern der Wert müsste gelöscht und dann mit neuem Typ angelegt werden.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:46 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz