Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi DLL und Create (https://www.delphipraxis.net/86269-dll-und-create.html)

Luckie 12. Feb 2007 08:43

Re: DLL und Create
 
Ich habe nur die Klasse TFuileStream als Beispiel benutzt, um dir zu zeigen, wie man mit Klassen arbeitet und entsprechenden Objekte erzeugt. Das geht natürlich entsprechend mit deiner TBass-Dingsbums Klasse. ;)

EWeiss 12. Feb 2007 14:20

Re: DLL und Create
 
Zitat:

Zitat von Luckie
Ich habe nur die Klasse TFuileStream als Beispiel benutzt, um dir zu zeigen, wie man mit Klassen arbeitet und entsprechenden Objekte erzeugt. Das geht natürlich entsprechend mit deiner TBass-Dingsbums Klasse. ;)

Ok hab jetzt verstanden was du meinst. ;)
Habe mich schon gefragt wo der zusammenhang sein soll.

gruss

EWeiss 13. Feb 2007 17:31

Re: DLL und Create
 
Das initialisieren und die ausführung aus der Echse funktionieren jetzt.
Allerdings fehlt mir ein Handle was ich nicht so einfach übergeben kann.

zwei fragen..
1. TBASSVis.Create(AOwner: TComponent);

Initialisieren tue ich es über die funktion von außen.

Delphi-Quellcode:
function BASS_WINAMPVIS_INIT: boolean; stdcall;

begin
   try
     BassVisMain1 := TBassVis.Create(nil);
   finally
     BassVisMain1.Free
   end;

   result := True;
end;
Delphi-Quellcode:
BassVisMain1 : TBASSVis;
Eigentlich müßte ja TBassVis.Create(nil); = TBassVis.Create(self); sein
Geht aber nur wenn das Projekt als Echse ausgelegt ist.
was ist Self ? kann ich da nicht das Handle der ausführenden anwendung übergeben?

2.Das gleiche hier!
Wie komme ich an das Handle aus der Fremdanwendung und was ist das für eins?
(AOwner as TWinControl).Handle;
Scheint das Handle des Controls sein welches die Aktion ausführt beispiel das vom Start Button oder?

gruss Emil

marabu 13. Feb 2007 19:56

Re: DLL und Create
 
Hallo Emil,

mit Self erhältst du innerhalb einer Methode eines Objektes eine Referenz auf die Objektinstanz. Das ist manchmal ganz schön um Namenskonflikte aufzulösen oder um bei der Erzeugung von child components sich selbst als Owner übergeben zu können. Self ist genau der gleiche Wert den du erhältst, wenn du das Ergebnis eines Konstruktors an eine Variable zuweist. Über die Variable kannst du von außen auf das Objekt zugreifen, über Self von innen.

Freundliche Grüße

EWeiss 13. Feb 2007 20:18

Re: DLL und Create
 
Zitat:

Zitat von marabu
Hallo Emil,

mit Self erhältst du innerhalb einer Methode eines Objektes eine Referenz auf die Objektinstanz. Das ist manchmal ganz schön um Namenskonflikte aufzulösen oder um bei der Erzeugung von child components sich selbst als Owner übergeben zu können. Self ist genau der gleiche Wert den du erhältst, wenn du das Ergebnis eines Konstruktors an eine Variable zuweist. Über die Variable kannst du von außen auf das Objekt zugreifen, über Self von innen.

Freundliche Grüße

Mein Problem ist ganz einfach erklärt.
Du kennst das ja.

Habe jetzt aus BassVis eine EXE erstellt.
Alles aber auch alles funktioniert einwandfrei.

OpenGL Plugins usw...
Jetzt muss ich das teil wieder in die DLL einbauen und schon gibts probleme weil
sich da keine Form befindet.
Und die funktionen von außerhalb aufgerufen werden müssen.

Kann ja keine komplette classe/Object an die DLL übergeben.
Bekomme langsam die Krise...

Gruss Emil

Luckie 13. Feb 2007 22:39

Re: DLL und Create
 
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  Self.Caption := 'Kuckuck';
end;
Self ist hier das TForm Objekt, also Form1. Meist lässt man es aber weg, es sei denn man will deutlich machen, dass man mit einer Objekt-Instanz des Objektes selber arbeitet.

EWeiss 13. Feb 2007 22:56

Re: DLL und Create
 
Zitat:

Zitat von Luckie
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  Self.Caption := 'Kuckuck';
end;
Self ist hier das TForm Objekt, also Form1. Meist lässt man es aber weg, es sei denn man will deutlich machen, dass man mit einer Objekt-Instanz des Objektes selber arbeitet.

Ahhh jo das hat mir geholfen.
Is quasi das gleiche wie in VB 'Me'
me.caption = "Mein Window-Caption Name"

Jup jetzt klappt das ganze schon besser.
Danke für die ausführliche beschreibung ..

Gruss Emil

Luckie 13. Feb 2007 23:04

Re: DLL und Create
 
In VB heißt das me? Nein, ist das süß. :love: :mrgreen:

PS: Der Vollständigkeithalber, in C++ heißt es this.

EWeiss 13. Feb 2007 23:22

Re: DLL und Create
 
Zitat:

Zitat von Luckie
In VB heißt das me? Nein, ist das süß. :love: :mrgreen:

PS: Der Vollständigkeithalber, in C++ heißt es this.

Naja ab und zu kann auch etwas in VB süss sein :mrgreen: :zwinker:

gruss


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:35 Uhr.
Seite 2 von 2     12   

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