AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Registry: Typ ermitteln

Ein Thema von Pseudemys Nelsoni · begonnen am 19. Mai 2004 · letzter Beitrag vom 19. Mai 2004
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#1

Registry: Typ ermitteln

  Alt 19. Mai 2004, 07:58
moin,

gibt es eine funktion der winapi mit der ich den typ eines keynamens bekomme? bei funktionen wie RegQueryValueEx übergibt man ja den typ, aber ich hab noch keine gesehen mit der man den typ bekommt.
Also mit typ meine ich z.b REG_SZ usw
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.611 Beiträge
 
#2

Re: Registry: Typ ermitteln

  Alt 19. Mai 2004, 08:10
Erm... Bei RegQueryValueEx bekommst Du den Typ zurück. Du übergibst ihn nicht.

Alternativ kannst Du auch mit RegEnumValue alle Namen der Values incl. deren Typ zurückgeben lassen.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#3

Re: Registry: Typ ermitteln

  Alt 19. Mai 2004, 08:10
Na klar, du übergibst als Typ REG_NONE, und erhältst im Gegenzug dafür den richtigen Typ geliefert. Ich habe dir, @Pseudemys Nelsoni, gestern (?) den Link zu einem DF-Beitrag gegeben, und in den Tutorials wird auch vorgemacht, wie man den Typ ermittelt. Und gerade eben habe ich auch was dazu bei deinem Exception-Beitrag geschrieben.


Edit: Name ergänzt, weil sich Phoenix reingedrängelt hat.
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#4

Re: Registry: Typ ermitteln

  Alt 19. Mai 2004, 08:20
Zitat:
Na klar, du übergibst als Typ REG_NONE, und erhältst im Gegenzug dafür den richtigen Typ geliefert.
hallo mathias, mich hat nur das hier stutzig gemacht:

Zitat von PSDK:
lpType
[out] Pointer to a variable that receives a code indicating the type of data stored in the specified value. For a list of the possible type codes, see Registry Value Types. The lpType parameter can be NULL if the type code is not required.
also weil da "out" und nicht "in" steht, deswegen wunder ich mich wieso man denn da den typ doch(ß) bekommt.
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#5

Re: Registry: Typ ermitteln

  Alt 19. Mai 2004, 09:00
Moin!

Zitat von Pseudemys Nelsoni:
also weil da "out" und nicht "in" steht, deswegen wunder ich mich wieso man denn da den typ doch(ß) bekommt.
Na die Funktion will einen Zeiger auf einen Speicherplatz haben wo sie die Information ablegen kann. Und sie gibt diese Informationen zurück, daher out. In bedeutet ja, dass die Funktion diesen Parameter beim Aufruf benötigt und dieser "reingegeben" werden muss, out, das dieser "herausgegeben" wird (bzw. zurück gegeben).

MfG
Muetze1
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#6

Re: Registry: Typ ermitteln

  Alt 19. Mai 2004, 09:16
ok, dann noch eine frage dazu. Ich habe folgendes(nur das wichtigste daraus) aus den Win32api tut sources von luckie:

Delphi-Quellcode:
function Reg_ReadString(const RootKey: HKEY; const RegVal: string): string;
var
  lpType: DWORD;
begin
  lpType := REG_NONE;

  if(RegQueryValueEx(RootKey,@RegVal[1],nil,@lpType,nil,@cbData) =
       ERROR_SUCCESS) .....

wieso wird lpType denn auf REG_NONE gesetzt wenn die funktion "RegQueryValueEx" sowieso nicht daraus liest?
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#7

Re: Registry: Typ ermitteln

  Alt 19. Mai 2004, 10:11
Evtl. wäre es ja denkbar, dass das Auslesen des Typs mal nicht klappt. In dem Fall hätte die Variable dann auch keinen Wert. So aber setzt du vorher REG_NONE, und es dürfte/wird beim Vergleich bzw. bei der Typprüfung überhaupt keine Probleme geben.

(btw: Das ist meine Meinung. Sollte die falsch sein, schiebe ich den schwarzen Peter an NicoDE weiter, von dem nämlich die Funktion stammt, durch die ich das allererste Mal Kontakt mit der Registry auf API-Ebene erhielt. )
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.611 Beiträge
 
#8

Re: Registry: Typ ermitteln

  Alt 19. Mai 2004, 10:46
Ich habe inzwischen eine ziemlich komplette Übersetzung der gesamten Registry-Funktionen für Delphi selber gemacht. Es ist tatsächlich so, das unter ganz widrigen Umständen der Wert von Type undefiniert ist.

Ist er aber initialisiert, so wird er auch nicht geändert - demnach kann man hier dann sauber weiterarbeiten ohne gefahr zu laufen, zufällig einen gültigen Wert drin stehen zu haben, der dann aber nicht passt.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
NicoDE
(Gast)

n/a Beiträge
 
#9

Re: Registry: Typ ermitteln

  Alt 19. Mai 2004, 11:03
Zitat von MathiasSimmack:
(btw: Das ist meine Meinung. Sollte die falsch sein, schiebe ich den schwarzen Peter an NicoDE weiter, von dem nämlich die Funktion stammt )
Ich habe zu oft erlebt, dass Funktionen bei nicht initialisierten Werten, deren Inhalt laut Dokumentation ignoriert werden sollte, nicht das tun was man erwartet hat.
Ist also einfach eine alte Angewohnheit, die ich, trotz teilweiser Sinnlosigkeit bzw. dem Anschein von Verfolgungswahn, nicht geneigt bin wieder abzulegen
(es kann unter Win9x zu einem Crash kommen, wenn man TLVItems nicht mit Nullen füllt, obwohl die Werte laut Flags ignoriert werden sollten... um nur ein Beispiel zu nennen)
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#10

Re: Registry: Typ ermitteln

  Alt 19. Mai 2004, 11:54
@Nico, Phoenix: Also war meine Vermutung richtig.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 22:12 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