AGB  ·  Datenschutz  ·  Impressum  







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

Typecast in DLL

Ein Thema von uvinul · begonnen am 21. Mär 2004 · letzter Beitrag vom 22. Mär 2004
 
jbg

Registriert seit: 12. Jun 2002
3.485 Beiträge
 
Delphi 10.1 Berlin Professional
 
#5

Re: Typecast in DLL

  Alt 21. Mär 2004, 22:10
Zitat von uvinul:
1., nur interessensmäßig, warum ist TCustomForm (exe) <> TCustomForm (dll)?
Das hängt damit zusammen, dass der Bezeichner TCustomForm in Wirklichkeit ein Zeiger auf die VMT (Virtual Method Table) der Klasse TCustomForm ist. Die VMT wird vom Compiler zur Kompilierzeit erzeugt und in die Ausgabedatei (EXE und DLL) geschrieben. Wenn du nun das Programm und die DLL lädst, so existieren nun zwei VMTs, eine in der EXE und eine in der DLL. Diese haben zwar den selben internen Aufbau, jedoch sind sie nicht Zuweisungskompatibel. Zudem existieren alle Methoden der Klasse als Maschinencode in der EXE und der DLL, womit jede dieser VMTs andere Zeigerwerte für die virtuellen Methoden enthalten.

Zitat:
2. Wie funktioniert das mit den Packages, damit ich doch den Typecast durchführen kann?
Wenn du die Unit, in der die Klasse deklariert hast, in ein Package "verschiebst", so gibt es die Klasse nur einmal und die anderen Module (EXE und DLLs) können ohne Probleme darauf zugreifen, da der Compiler die schlimmste Arbeit abnimmt.

Zitat:
Gibt es noch andere Möglichkeiten, von der Dll aus auf mein Objekt zugreifen zu können?
Ja, indem man alles, was der Compiler einem abnimmt, per Hand macht. Was aber nicht gerade wenig und einfach ist, da der Compiler ein paar mehr Möglichkeiten hat.


Für die Klasse TCustomForm gibt es bereits ein Package: vcl.
  Mit Zitat antworten Zitat
 


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 18:17 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