Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Gibt es die funktion StrToHKEY ? (https://www.delphipraxis.net/20924-gibt-es-die-funktion-strtohkey.html)

Pseudemys Nelsoni 25. Apr 2004 13:53


Gibt es die funktion StrToHKEY ?
 
moin :D

da ich das rad nicht neu erfinden möchte frage ich ob es diese funktion (wie auch immer der name sein koennte) bereits gibt?
ansonsten hab ich mir das so gedacht:

Delphi-Quellcode:
function StrToHKEY(StrKey: string): HKEY;
begin
  if StrKey = 'HKEY_CLASSES_ROOT' then result := HKEY_CLASSES_ROOT;
  if StrKey = 'HKEY_CURRENT_USER' then result := HKEY_CURRENT_USER;
  if StrKey = 'HKEY_LOCAL_MACHINE' then result := HKEY_LOCAL_MACHINE;
  if StrKey = 'HKEY_USERS' then result := HKEY_USERS;
  if StrKey = 'HKEY_CURRENT_CONFIG' then result := HKEY_CURRENT_CONFIG;
end;

SirThornberry 25. Apr 2004 13:55

Re: Gibt es die funktion StrToHKEY ?
 
ich würde noch nen uppercase auf "StrKey" durchführen damit es egal ist ob der user 'HKEY_CLASSES_ROOT' groß oder klein schreibt

Pseudemys Nelsoni 25. Apr 2004 13:56

Re: Gibt es die funktion StrToHKEY ?
 
Stimmt, ganz vergessen, danke ^^

Meflin 25. Apr 2004 13:59

Re: Gibt es die funktion StrToHKEY ?
 
nur zur info: sowas gibts wohl nicht ;-)

mirage228 25. Apr 2004 13:59

Re: Gibt es die funktion StrToHKEY ?
 
Zitat:

Zitat von Pseudemys Nelsoni
Stimmt, ganz vergessen, danke ^^

Hi,

ist evtl. nicht sooo wichtig, aber ich würde den StringParameter als CONST deklarieren, also

Delphi-Quellcode:
function StrToHKEY(const StrKey: string): HKEY;
sonst fügt Delphi noch zusätzlichen Code für die Referenzzählung des Strings ein und das macht die funktion langsamer.

mfG
mirage228

Pseudemys Nelsoni 25. Apr 2004 14:01

Re: Gibt es die funktion StrToHKEY ?
 
danke, mach ich 8)

toms 25. Apr 2004 14:10

Re: Gibt es die funktion StrToHKEY ?
 
Meine Funktionen sehen so aus:

Delphi-Quellcode:
const
  HKEYNames: array[0..6] of string =
    ('HKEY_CLASSES_ROOT', 'HKEY_CURRENT_USER', 'HKEY_LOCAL_MACHINE', 'HKEY_USERS',
    'HKEY_PERFORMANCE_DATA', 'HKEY_CURRENT_CONFIG', 'HKEY_DYN_DATA');

function HKEYToStr(const Key: HKEY): string;
begin
  if (key < $80000000) or (key > $80000006) then
    Result := ''
  else
    Result := HKEYNames[key - $80000000];
end;

function StrToHKEY(const KEY: string): HKEY;
var
  i: Byte;
begin
  Result := $0;
  for i := Low(HKEYNames) to High(HKEYNames) do
  begin
    if SameText(HKEYNames[i], KEY) then
      Result := $80000000 + i;
  end;
end;

MathiasSimmack 25. Apr 2004 19:38

Re: Gibt es die funktion StrToHKEY ?
 
Ich würde sogar noch einen Schritt weiter gehen und "$80000000" durch "HKEY_CLASSES_ROOT" ersetzen, damit man auf Anhieb weiß, worauf sich die zugrunde liegenden Berechnungen des Schlüssels bzw. Strings stützen.

Und dann würde ich auch noch die Kurzformen wie HKCR, HKCU, HKLM, usw. integrieren.

Pseudemys Nelsoni 26. Apr 2004 15:31

Re: Gibt es die funktion StrToHKEY ?
 
was ist denn $80000000 und $80000006?

ich würd nicht nur gern wissen wwas sie bedeuten, sondern auch wie man auf diese zahlen kommt..

The-X 26. Apr 2004 15:34

Re: Gibt es die funktion StrToHKEY ?
 
Das sind die Werte zu den Konstanten (HKEY_*)
Delphi-Quellcode:
Const
 HKEY_CLASSES_ROOT    = $80000000;
 HKEY_CURRENT_USER    = $80000001;
 HKEY_LOCAL_MACHINE   = $80000002;
 HKEY_USERS           = $80000003;
 HKEY_PERFORMANCE_DATA = $80000004;
 HKEY_CURRENT_CONFIG  = $80000005;
 HKEY_DYN_DATA        = $80000006;


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:27 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz