AGB  ·  Datenschutz  ·  Impressum  







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

Procedure in DLL?

Offene Frage von "Bluemeus"
Ein Thema von Bluemeus · begonnen am 9. Jan 2005 · letzter Beitrag vom 9. Jan 2005
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Bluemeus
Bluemeus

Registriert seit: 1. Dez 2004
Ort: Erfurt
16 Beiträge
 
Delphi 7 Enterprise
 
#1

Procedure in DLL?

  Alt 9. Jan 2005, 19:34
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:
procedure OpenReg(const Key: ShortString);
var reg: TRegistry;
begin
      reg:= TRegistry.Create;
      reg.RootKey:= HKEY_CURRENT_USER;
      reg.OpenKey(Key,true);
end;
und danach wieder schließen ...

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?!
Stephan
  Mit Zitat antworten Zitat
Oxmyx

Registriert seit: 21. Sep 2004
499 Beiträge
 
#2

Re: Procedure in DLL?

  Alt 9. Jan 2005, 19:39
In DLLs kannst du nicht ohne weiteres Strings verwenden. Übergebe den Key doch mal per PChar.
  Mit Zitat antworten Zitat
Benutzerbild von Bluemeus
Bluemeus

Registriert seit: 1. Dez 2004
Ort: Erfurt
16 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Procedure in DLL?

  Alt 9. Jan 2005, 19:42
Zitat von Oxmyx:
In DLLs kannst du nicht ohne weiteres Strings verwenden. Übergebe den Key doch mal per PChar.
Strings nicht, aber PChar und Shortstring dachte ich?!
Stephan
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#4

Re: Procedure in DLL?

  Alt 9. Jan 2005, 19:43
Hi!

Welchen Fehler erhälst du denn?


Ciao Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
Benutzerbild von Bluemeus
Bluemeus

Registriert seit: 1. Dez 2004
Ort: Erfurt
16 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Procedure in DLL?

  Alt 9. Jan 2005, 19:47
Zitat von fkerber:
Hi!

Welchen Fehler erhälst du denn?


Ciao Frederic
Zugriffsverletzung bei Adresse xxx in Modul xxx. Lesen von adresse 00000004
Stephan
  Mit Zitat antworten Zitat
Benutzerbild von Sprint
Sprint

Registriert seit: 18. Aug 2004
Ort: Edewecht
712 Beiträge
 
Delphi 5 Professional
 
#6

Re: Procedure in DLL?

  Alt 9. Jan 2005, 19:50
Zitat von Bluemeus:
Delphi-Quellcode:
procedure CloseReg;
var reg: TRegistry;
begin
      reg.free;
end;
aber ich erhalte immer einen fehler
Du kannst nichts freigeben, was nicht existiert.
Ciao, Sprint.

"I don't know what I am doing, but I am sure I am having fun!"
  Mit Zitat antworten Zitat
paresy

Registriert seit: 24. Aug 2004
Ort: Lübeck
105 Beiträge
 
Delphi 2007 Professional
 
#7

Re: Procedure in DLL?

  Alt 9. Jan 2005, 19:53
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
  Mit Zitat antworten Zitat
Benutzerbild von Bluemeus
Bluemeus

Registriert seit: 1. Dez 2004
Ort: Erfurt
16 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Procedure in DLL?

  Alt 9. Jan 2005, 19:54
Zitat von Sprint:
Zitat von Bluemeus:
Delphi-Quellcode:
procedure CloseReg;
var reg: TRegistry;
begin
      reg.free;
end;
aber ich erhalte immer einen fehler
Du kannst nichts freigeben, was nicht existiert.
Ok ... ich fass nochmal zusammen:

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..?!
Stephan
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#9

Re: Procedure in DLL?

  Alt 9. Jan 2005, 19:57
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....
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Benutzerbild von Sprint
Sprint

Registriert seit: 18. Aug 2004
Ort: Edewecht
712 Beiträge
 
Delphi 5 Professional
 
#10

Re: Procedure in DLL?

  Alt 9. Jan 2005, 20:11
Zitat von Bluemeus:
könnte mir jmd. den aufbau mal erklären, ob ich stdcall benötige etc..?!
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.
Ciao, Sprint.

"I don't know what I am doing, but I am sure I am having fun!"
  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:17 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