AGB  ·  Datenschutz  ·  Impressum  







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

DLL - Objekte austauschen

Ein Thema von Neutral General · begonnen am 19. Dez 2018 · letzter Beitrag vom 19. Dez 2018
Antwort Antwort
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

AW: DLL - Objekte austauschen

  Alt 19. Dez 2018, 14:25
Ich könnte TFooBar ableiten, aber sofern ich jetzt nicht irgendwas verpasse bringt mir das nicht wirklich was.
Der Konstruktor des Bibliotheks-Objekts will ja trotzdem ein TFooBar und kein Interface.
Selbst wenn ich ein
Delphi-Quellcode:
//
TMeinFooBar = class(TFooBar, IFoobarKapselung)
hätte, bräuchte ich ja trotzdem eine Objektinstanz um sie der Bibliothek zu übergeben:

Delphi-Quellcode:
// Anwendung
var
  foobar: TFooBar;
  kapselung: IFoobarKapselung;
begin
  foobar := TFoobar.Create;
  kapselung := TFoobarKapselung.Create(foobar);

  DoDLLStuff(kapselung);

// DLL

procedure DoDLLStuff(const fooBar: IFoobarKapselung);
var bib: TBibliotheksObject;
begin
  bib := TBibliotheksObject.Create(TFooBar(foobar._Instance)); // Ich kann ja "foobar" nicht übergeben.. egal ob dahinter ein TFoobar oder ein TMeinFoobar = class(TFoobar) hängt
end;

// Bibliothek:

TBibliotheksObject = class
public
  constructor Create(AFoobar: TFoobar);
end;
Oder habe ich dich falsch verstanden?
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.075 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: DLL - Objekte austauschen

  Alt 19. Dez 2018, 14:53
Ich nehme an, das eigentliche in der DLL gebrauchte TFooBar-Objekt kann nicht so einfach in der DLL neu erzeugt werden und mit den Werten aus dem geinterfacten Fassade-Objekt gefüllt werden?
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

AW: DLL - Objekte austauschen

  Alt 19. Dez 2018, 14:55
Ich nehme an, das eigentliche in der DLL gebrauchte TFooBar-Objekt kann nicht so einfach in der DLL neu erzeugt werden und mit den Werten aus dem geinterfacten Fassade-Objekt gefüllt werden?
Nein leider nicht
TFooBar ist eine Datenbank-Connection.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.679 Beiträge
 
Delphi 12 Athens
 
#4

AW: DLL - Objekte austauschen

  Alt 19. Dez 2018, 14:57
Oder habe ich dich falsch verstanden?
Offenbar! Wenn die Bibliothek ein TFoobar braucht, dann muss TFoobar auch irgendwo innerhalb der DLL deklariert sein. Sollte TFoobar eine rein virtuelle Klasse sein, dann könnte man eine Ableitung erstellen, die sämtliche Methoden auf die Interface-Instanz weiterleitet.

Beispiel:
Delphi-Quellcode:
type
  TFoobar = class
  public
    procedure MyMethod; virtual;
  end;

  IFoobar = interface
    procedure MyMethod;
  end;

  TFoobarWrapper = class(TFoobar)
  private
    FInterface: IFoobar;
  public
    constructor Create(AInterface: IFoobar);
    procedure MyMethod; override;
  end;

constructor TFoobarWrapper.Create(AInterface: IFoobar);
begin
  inherited Create;
  FInterface := AInterface;
end;

procedure TFoobarWrapper.MyMethod;
begin
  FInterface.MyMethod;
end;
Innerhalb der DLL erzeugst du dann ein TFoobarWrapper mit dem Interface im Create und den Wrapper übergibst du dann an die Bibliothek. Geht halt nur, wenn TFoobar ausreichend virtuelle Methoden hat.

Wenn, wie gesagt, TFoobar eine Datenbank-Connection ist, dann sag doch mal, welche. Eventuell kann man dann konkretere Aussagen treffen.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

AW: DLL - Objekte austauschen

  Alt 19. Dez 2018, 15:03
Die Connection ist eine (abgeleitete) TIBCConnection (IBDAC) (Firebird 3.0)
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von MyRealName
MyRealName

Registriert seit: 19. Okt 2003
Ort: Heilbronn
690 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: DLL - Objekte austauschen

  Alt 19. Dez 2018, 15:11
Wenn du DLL und EXE mit runtime Bibliotheken übersetzt, dann kannst du ohne Probleme Objekte sharen. Nur sollten exe und DLL mit der gleichen Delphi Version übersetzt worden sein
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

AW: DLL - Objekte austauschen

  Alt 19. Dez 2018, 15:17
Es muss leider eine DLL sein
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.679 Beiträge
 
Delphi 12 Athens
 
#8

AW: DLL - Objekte austauschen

  Alt 19. Dez 2018, 15:25
Es muss leider eine DLL sein
Auch eine DLL kann mit Packages compiliert sein.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#9

AW: DLL - Objekte austauschen

  Alt 19. Dez 2018, 15:50
Oh stimmt.
Ich werds mal ausprobieren.. Habe grade das Problem, dass die Liste der Laufzeitpackages aus irgendeinem Grund die 10.0er Packages enthält obwohl ich mit 10.3 arbeite (10.0 parallel installiert).
Deswegen bekomme ich Fehler im Stil von
Zitat:
Package '...RS23' wird benötigt, konnte aber nicht gefunden werden
Sobald ich das Problem gelöst habe werde ich das mal ausprobieren und ich mich wieder melden.
Danke schon mal für eure Hilfe bis hier hin!
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.277 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: DLL - Objekte austauschen

  Alt 19. Dez 2018, 16:12
Hallo,
ich würde in der DLL eine neue Connection auf Basis der übergebenen Connection erzeugen.
Heiko
  Mit Zitat antworten Zitat
Antwort Antwort


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 04:38 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