![]() |
Procedure in DLL?
hi,
ich möchte eine Procedure, die die registry öffnet, den rootkey öffnet und einen Key, der als const übergeben werden soll, in eine dll auslagern? ungefähr so:
Delphi-Quellcode:
und danach wieder schließen ...
procedure OpenReg(const Key: ShortString);
var reg: TRegistry; begin reg:= TRegistry.Create; reg.RootKey:= HKEY_CURRENT_USER; reg.OpenKey(Key,true); end;
Delphi-Quellcode:
procedure CloseReg;
var reg: TRegistry; begin reg.free; end; aber ich erhalte immer einen fehler ... kann mir jmd. mal erklären, wie ich proceduren in eine dll auslagere?! |
Re: Procedure in DLL?
In DLLs kannst du nicht ohne weiteres Strings verwenden. Übergebe den Key doch mal per PChar.
|
Re: Procedure in DLL?
Zitat:
|
Re: Procedure in DLL?
Hi!
Welchen Fehler erhälst du denn? Ciao Frederic |
Re: Procedure in DLL?
Zitat:
|
Re: Procedure in DLL?
Zitat:
|
Re: Procedure in DLL?
du hast "var reg: TRegistry; " nur lokal definiert.... deswegen kannst du es mit reg.free nicht freigeben, weil es garnicht in der prozedur existiert.
du musst es in der DLL global definieren. außerdem ist das was du in die DLL auslagern willst bestimmt nocht nicht alles!? du willst du bestimmt noch nen wert zurückbekommen? grüße, paresy |
Re: Procedure in DLL?
Zitat:
sagen wir mal, wir lassen die CloseReg Proc. weg ... das ist eh nur eine zeile. aber ich möchte gern die registry mit dem key etc. per OpenReg öffnen können, sprich diese funktion nicht wie bisher per programm sondern per dll aufrufen! könnte mir jmd. den aufbau mal erklären, ob ich stdcall benötige etc..?! |
Re: Procedure in DLL?
du musst erst mal reg: TRegistry global deklarieren
so, wie du es machst, wird alles in openreg schön gemacht, nur bei procedure-ende verschwindet reg im nirvana.... |
Re: Procedure in DLL?
Zitat:
Delphi-Quellcode:
library Project2;
uses Windows, SysUtils, Registry; var FRegistry: TRegistry; {--------------------------------------------------------------------------------------------------} procedure OpenKey(const Key: PChar); begin if not Assigned(FRegistry) then FRegistry := TRegistry.Create; FRegistry.OpenKey(Key, True); end; {--------------------------------------------------------------------------------------------------} procedure CloseKey; begin FreeAndNil(FRegistry); end; {--------------------------------------------------------------------------------------------------} procedure LibraryProc(Reason: Integer); begin case Reason of DLL_PROCESS_DETACH: if Assigned(FRegistry) then FRegistry.Free; end; end; {--------------------------------------------------------------------------------------------------} exports OpenKey, CloseKey; {--------------------------------------------------------------------------------------------------} begin DllProc := LibraryProc; end. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:20 Uhr. |
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-2025 by Thomas Breitkreuz