![]() |
DLL und Create
ich möchte gerne eine Create function in meiner DLL integrieren weiss aber nicht ob das geht.
Beim start der Dll möchte ich in DLL_PROCESS_ATTACH: einen aufruf einbauen der aktionen ausführt die nur einmal beim start initialisiert werden dürfen. Hab mir das so gedacht
Delphi-Quellcode:
Hier schon das erste problem. Sender steht ja nicht zur verfügung
BassVisMain.Create(Sender);
Die Classe selber sieht so aus.
Delphi-Quellcode:
TBASSVis = class(TComponent)
private public constructor Create(AOwner: TComponent); override; destructor Destroy; override; end; Var BassVisMain : TBassVis; implementation constructor TBASSVis.Create(AOwner: TComponent); begin end; destructor TBASSVis.Destroy; begin end;
Delphi-Quellcode:
Generell die frage ob sowas in DLL's überhaupt möglich ist.
procedure LibraryProc(Reason: integer);
begin case (Reason) of DLL_PROCESS_ATTACH: begin BassVisMain.Create(Sender); Wenn ja wie regel ich das mit 'Sender' gruss Emil |
Re: DLL und Create
Natürlich kann Klassen in DLLs nutzen. Schwierig wird es nur, wenn man aus der DLL eine Klassenreferenz zurückgeben will. Bei deinem konkrten Problem, übergib einfach nil als Wert für den Sender.
|
Re: DLL und Create
Die Sections initialization und finalization sind deine Freunde hier.
Haben auch den Vorteil, das der Code auch dann nach läuft wenn er in die Echse gelinkt wird. :zwinker: |
Re: DLL und Create
Zitat:
Hätte ja sein können das sich die DLL recursive aufruft. Werde es mal mit nil versuchen. EDIT: Habs versucht... EAC error Anwendung kann nicht gestartet werden. Springt auch nicht in Create rein :roll: gruss |
Re: DLL und Create
Zitat:
|
Re: DLL und Create
Zitat:
Zumindest nicht so wie ich es mache. gruss |
Re: DLL und Create
Was Elvis meint:
Delphi-Quellcode:
Habe ich dich in letzter Zeit zu sehr mit VB(S) verdorben? :zwinker:
var
fs: TFileStream; begin fs := TFileStream.Create(...); |
Re: DLL und Create
Zitat:
Wo und für was soll ich as einsetzen. EDIT: In der Form gibt es ja ein create event was beim start nur einmal ausgeführt wird sowas will ich in die DLL einbauen. gruss |
Re: DLL und Create
Delphi-Quellcode:
Was du wahrscheinlich gemacht hast:
var
fs: TFileStream; // Variable vom Typ TFileStream deklarieren. Hier wird unsere Objekt-Refrenz abgelegt begin fs := TFileStream.Create(...); // Objekt erzeugen und Objektreferenz sichern try fs.MethodeXY; // eine Methode der Klasse TFileStream aufrufen finally fs.Free; // Objekt wieder zerstören end;
Delphi-Quellcode:
Du hast eine Methode einer Klasse benutzt, ohne vorher die Klasse zu instanzieren / anzulegen. Es ist zwar der Konstruktor aber der Rest läuft ins Leere.
var
fs: TFileStream; begin fs.Create(...); |
Re: DLL und Create
Ich habe mir mal den aufruf TFileStream.Create(...); angesehen
dieser erwartet eine übergabe eines string und Mode : word Vielleicht bin ich auch zu blöd ??? Finde den zusammenhang mit der von mir oben aufgeführten funktion nicht. Und wie ich damit kommunizieren soll das es funktioniert. Das ist mir noch etwas zu hoch :oops: gruss |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:21 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