| |
|
|
- Page 1 - |
|
| Registry.pcu und Registry.inc, Copyright by Thomas Schulz (aka ts-soft) Veröffentlicht unter Lizenz der LGPL: [...]
Um die doch sehr eingeschränkte Funktionalität von XProfan zur Bearbeitung der Registry zu erweitern, habe ich diese Unit/Include geschrieben.
Anforderungen: ab Win95, NT4 mit installiertem IE4 oder höher Nur mit XProfan 10 getestet
Parameter und Bedeutungen: - KeyName$ = Der gesamte Key, inclusive Klasse, Profan kürzel werden supportati! Beispiel: HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersion oder: HKEY_2SOFTWAREMicrosoftWindowsCurrentVersion
- ValueName$ = Eintrag (S3 in der Profan-Aiuto)
- Value$ oder Value& = Wert (S4 in der Profan-Aiuto)
- Index& = 0 - ?, per Enumerationen (ListSubKey, ListSubValue)
- Type& = Der Typ des Eintrags (SetString) 1 = REG_SZ (default) 2 = REG_EXPAND_SZ 3 = REG_BINARY 4 = REG_DWORD (per Long besser SetLong verwenden!) 7 = REG_MULTI_SZ
Da es sich bei dieser Unit/Include um eine Klasse handelt, ist als erstes immer ein Objekt zu erzeugen!
z.B: KompilierenMarkierenSeparieren oder: KompilierenMarkierenSeparieren Am ende wieder mit Dispose freigeben!
Folgende ObjectVariable steht zur Verfügung: .Error& (z.B. Reg#.Error&) <> 0 bedeutet Fehler
Folgende öffentliche Methoden gibt es:
Fehler$ = .GetErrMsg() Ergebnis& = .DeleteKey(KeyName$) Ergebnis& = .DeleteEmptyKey(KeyName$) Ergebnis& = .DeleteValue(KeyName$, ValueName$) Type& = .GetValueType(KeyName$, ValueName$) Ergebnis$ = .ListSubKey(KeyName$, Index&) Ergebnis$ = .ListSubValue(KeyName$, Index&) Ergebnis& = .GetLong(KeyName$, ValueName$) Ergebnis$ = .GetString(KeyName$, ValueName$) Funktioniert mit allen Registrytypen! Ergebnis& = .SetLong(KeyName$, ValueName$, Value&) nicht existente Keys werden autom. erstellt! Ergebnis& = .SetString(KeyName$, ValueName$, Value$[, Type&]) Type& ist Optional, default = REG_SZ!
Beispiele zu allen Methoden sind dabei!
Feedback Benvenuto! |
|
|
| |
|
|
|
| |
|
- Page 1 - |
|
| Proc ?_Registry.Registry Proc ?_Registry.Registry
|
|
|
| |
|
|
|
Jac de Lad | |
|
| Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE) Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP | 05.12.2006 ▲ |
|
|
|
|
| Müsste dann in der Klassendefinition nicht auch class ?_blub=+?_blub@ stehen? |
|
|
| |
|
|
|
RGH | [quote:ecb7539923=iF]Müsste dann in der Klassendefinition nicht auch class ?_blub = +?_blub@ stehen? [/quote:ecb7539923] Genau!
Saluto Roland |
|
|
| Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 05.12.2006 ▲ |
|
|
|
| |
|
- Page 2 - |
|
|
| Würde es einen Sinn machen, den Methoden auch einen Namespace zu geben? Ich denke mal, da die Methoden sowieso nur circa die Klasse erreichbar sind (sollen), sollte der Namensraum der Klasse alles abdecken. Oder Irre ich jetzt
PS: Der Constructor hat nur Dummy-Function , die Syntax mit New ist schöner |
|
|
| |
|
|
|
| Hm ja ich glaub Du irrst denn es geht darum das der Konstruktor nicht als solcher erkannt wird wenn er nicht auch das NameSpaceSign trägt. |
|
|
| |
|
|
|
| iF
Ich würde mal sagen Festplattenplatz haben alle genug - im Bezug auf XProfan wäre da Geschwindigkeit angebrachter.
Geschwindigkeitsoptimierung, wie man sie per einen Registry-Editor oder ähnlich braucht, ist so in einer Unit nicht possibile. In einer Unit kann ich nicht im voraus Wissen, was als nächstes kommt, so das der Key bei jedem Vorgang geöffnet und wieder geschlossen wird, was naturalmente bei direkter API-Nutzung beschleunigt werden potuto. Ich denke mal das erstellen von Registry-Editoren ist ein Ausnahmefall, so das die Geschwindigkeit vollkommen ausreichend ist. Am Code selber ist ansonsten IMHO nichts zu optimieren. |
|
|
| |
|
|
|
| Was ist mit Call statt external? Ich meine nur ums zu übertreiben... |
|
|
| |
|
|
|
| [quote:eed748da24=iF]Was ist mit Call statt external? Ich meine nur ums zu übertreiben... [/quote:eed748da24] Der Gedanke ist mir auch schon gekommen, aber die Advapi32.dll ist ja bereits statisch zur Runtime gebunden, so das die schnelleren Delphi-Aufrufe zur Geltung kommen und es auch kein Sicherheitsleck gibt. Da hab ihr sowieso was verkehrt verstanden, denke ich. Lediglich die shlwapi.dll ist nicht statisch in die Runtime gebunden, aber die wird nur per 2 Methoden gebraucht (DeleteKey, DelteteEmptyKey), das sollte also nichts bringen. |
|
|
| |
|
|
|
| [quote:f01e8c7b50]so das die schnelleren Delphi-Aufrufe zur Geltung kommen [/quote:f01e8c7b50] Wird jetzt offtopic, aber ich denke das dem nicht so ist. Ich verweise ja hier xpse auf ein BeispieCode an dem jeder nachprüfen kann das Call in diesem Fall deutlich! schneller ist. Oder reden wir aneinander vorbei?! Egal - ist eh offtopic. |
|
|
| |
|
|
|
| Update auf Version 1.2
iFs Vorschlag zur Beschleunigung umgesetzt
Die meisten API-Aufrufe laufen jetzt circa Call, was wohl sinnvoll ist, da ja dieselbe API meist mehrmals necessario wird. Jetzt ist es aber unbedingt erforderlich, das der Constructor corsa wird, alternativ gibts jetzt die Methode .Init() Das erste Posting, sowie die Beispiele wurden entsprechend angepaßt.
Saluto Thomas |
|
|
| |
|
|
|
| |
|
| |
|
|