![]() |
DLL und Komponenten erzeugen
Ich hab mir was zusammengebastelt, das verschiedene DLLs dynamisch laden kann. In diesen DLLs sollen verschiedene Aufgaben erfüllt werden, von denen das 'Mutterprogramm' keine Ahnung haben braucht. Das stellt nur über eine Weboberfläche die Aus-/Eingabe zur Verfügung. 8)
Jetzt ist aber mein Problem, das ich in der DLL diverse Komponenten erzeugen muss, damit diese Ihre Funktion erledigen können. Mir ist schon klar, wie man diese zur Laufzeit erzeugt, aber im Moment hänge ich daran, wie man innerhalb einer DLL ein Ereignis erstellt und es auch funktionsfähig der Kompo zuweisen kann. :? Any Hints? |
Re: DLL und Komponenten erzeugen
du musst eine Procedure vom eventtype definieren und das event dann zuweisen. Wenn du beispielsweise das OnTimer-Event verwenden musst du erst eine Procedure vom Typ TNotifyevent definieren (weil OnTimer von diesem Typ ist)
Delphi-Quellcode:
und dann musst du dem timer die procedure noch zuweisen
[...]
private procedure FOnTimerProc(Sender: TObject); [...] procedure TYourComponent.FOnTimerProc(Sender: TObject); begin //do something end; [...]
Delphi-Quellcode:
[...]
YourTimer.OnTimer := FOnTimerProc; [...] |
Re: DLL und Komponenten erzeugen
Zitat:
|
Re: DLL und Komponenten erzeugen
Zitat:
hast du in deiner DLL denn alles in einer UNIT? Du benötigst auch keinen private bereich. Du benötigst nur ein Objekt, welches die Methode bereitstellt und dann kannst du die dem eigentlichen objekt zuweisen.... Geht auch ohne zusatz-Objekt. Dazu musst du hier mal suchen.. Gruß Ken |
Re: DLL und Komponenten erzeugen
JA, ist alles in einer Datei, was bei einer DLL aber eigentlich nicht verwunderbar sein sollte.
Delphi-Quellcode:
Wenn ich es einfach so mache, wie ich es gewohnt bin (Ich bin eigentlich kein Nubbie!), dann bringt er eben o.g. Fehler, und ich weiss nicht warum! :(
procedure TimerEvent(Sender: TObject);
begin ; end; procedure InitModule; begin img_mem := TImage.Create(nil); img_cpu := TImage.Create(nil); tmr_sec := TTimer.Create(nil); with tmr_sec do begin Interval := 1000; OnTimer := TimerEvent; //Inkompatible Typen: 'Methodenzeiger und reguläre Prozedur' end; end; |
Re: DLL und Komponenten erzeugen
Hi,
ein Methodenzeiger (also eine Methode einer Klasse) führt immer den versteckten Parameter SELF mit. Das ist bei normalen (regulären) Prozeduren nicht der Fall, also sind die beiden Prozeduren nicht kompatibel. mfG mirage228 |
Re: DLL und Komponenten erzeugen
Zitat:
|
Re: DLL und Komponenten erzeugen
Delphi-Quellcode:
Gruß,
procedure TMyObjekt.TimerEvent(Sender: TObject);
begin end; {...} myObjekt := TMyObjekt.Create; {...} procedure InitModule; begin {...} tmr_sec.OnTimer := myObjekt.TimerEvent; end; Stephan :) |
Re: DLL und Komponenten erzeugen
Also ich verstehe ja, wo ihr alle hinwollt, aber ich habe keinerlei Objekte/Klassen da... Daher weiss ich nicht, woher ich in diesem Beispiel dieses MyObjekt hernehmen soll.
---Edit--- Da das hier wohl keine Früchte zu tragen scheint, werd ich wohl den steinigeren Weg gehen und mein gesamtes Plugin-System umbauen müssen. Hab mir das Tut von sakura durchgelesen, und da es da mit einer Klasse gelöst wird, wird mir wohl nichts anderes über bleiben, es dahingehend umzubauen... Trotzdem besten Dank an Alle, die versucht haben, mir zu helfen. |
Re: DLL und Komponenten erzeugen
Du kannst doch einfach ein Hilfsobject bauen was wirklich nur zur ontimerbehandlung da ist.
also
Delphi-Quellcode:
Durch das führende "class" brauchst du keine Instanz der Klasse zu erstellen um sie zu verwenden
[...]
type THilfsobj = class public class procedure OnTimerProc(Sender: TObject); end; [...] class procedure THilfsobj.OnTimerProc(Sender: TObject); begin //do something on timer end; [...] timer1.OnTimer := THilfsobj.OnTimerProc; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:46 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