AGB  ·  Datenschutz  ·  Impressum  







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

DLL wegen RTTI zu einem Package umbauen

Ein Thema von QuickAndDirty · begonnen am 28. Aug 2006 · letzter Beitrag vom 12. Okt 2014
Antwort Antwort
Seite 1 von 2  1 2      
jbg

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

Re: DLL wegen RTTI zu einem Package umbauen

  Alt 28. Aug 2006, 18:50
Zitat von QuickAndDirty:
Du scherzt . Das wäre viel zu einfach. *Hoffnung*
Nein, ich scherze nicht. So mache ich das auch bei DelphiSpeedUp und DDevExtensions (beides DLLs, die gegen vcl.bpl und rtl.bpl gelinkt sind)
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.441 Beiträge
 
Delphi 2007 Professional
 
#2

AW: Re: DLL wegen RTTI zu einem Package umbauen

  Alt 12. Okt 2014, 12:31
Zitat von QuickAndDirty:
Du scherzt . Das wäre viel zu einfach. *Hoffnung*
Nein, ich scherze nicht. So mache ich das auch bei DelphiSpeedUp und DDevExtensions (beides DLLs, die gegen vcl.bpl und rtl.bpl gelinkt sind)
Hallo, bin gerade daruf gestossen

schaffe ich es auch damit (wenn ich EXE und DLL mit rtl und vcl packages compiliere), das ich in einer "normalen" DLL eine Objekt samt RTTI erzeuge, dieses Objekt dann in ner Funktion der EXE gebe und die EXE kann dann per RTTI auf die properties zugreifen?

Oder hab ich dieses Aussage falsch verstanden?
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: DLL wegen RTTI zu einem Package umbauen

  Alt 12. Okt 2014, 12:39
Wenn alles mit Runtime-Packages und alles mit dem absolut gleichen Kompiler erzeugt wurde, dann ja.

Dann kannst du aber auch gleich ein Package anstatt einer DLL verwenden.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (12. Okt 2014 um 12:41 Uhr)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.880 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: DLL wegen RTTI zu einem Package umbauen

  Alt 12. Okt 2014, 12:43
Man sollte nie Objekte im Interface einer Dll verwenden. Für diesen Zweck wurden die Bpls entwickelt (technisch handelt es sich ja um Dlls, mit erweitertem Interface)
Markus Kinzler
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.441 Beiträge
 
Delphi 2007 Professional
 
#5

AW: DLL wegen RTTI zu einem Package umbauen

  Alt 12. Okt 2014, 12:53
Ich habe bei den BPL's Angst, das wenn sich viel in der EXE tut ich jedesmal die BPL's erneut erzeugen muss

Der Kompiler würde eh immer gleich sein/bleiben ...

Nur muss ich eben von 2-3 Stellen dynamisch diese Objekte erzeugen und dynamisch auf RTTI Properties zugreifen können
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: DLL wegen RTTI zu einem Package umbauen

  Alt 12. Okt 2014, 13:00
Und bei einer DLL wäre das anders?
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.441 Beiträge
 
Delphi 2007 Professional
 
#7

AW: DLL wegen RTTI zu einem Package umbauen

  Alt 12. Okt 2014, 13:08
Hmmmmm... ich hatte halt die Hoffnung

Wenn ich nun eine DLL habe die hat ja dein ihre eigene RTTI.

Sagen wir in der DLL habe ich folgendes Objekt.

Delphi-Quellcode:
type TMeinDLLObject = class
published
  Lines : TStringList;
  Text : string;
end;
in der EXE habe ich nun ein Objekt : TMeinDLLObjekt

Kann ich nun in der EXE rausfinden, das das Objekt eine RTTI hat die nicht in der EXE zu finden ist?
Und es sind dann AUTOMATISCH alle properties (in dem Fall Lines : TStringList) auch in der RTTI der DLL zu finden oder?

Bzw grob gesagt alles was in der DLL mit .Create erzeugt wird hat die RTTI in der EXE und umgekehrt oder?
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.553 Beiträge
 
Delphi 12 Athens
 
#8

AW: DLL wegen RTTI zu einem Package umbauen

  Alt 12. Okt 2014, 13:26
Rausfinden ob ein Objekt (dessen Klasse) in der RTTI der EXE ist, lässt sich leicht.
Du fragst einfach nach der RTTI zu dieser Klasse und es wird natürlich Keine gefunden.

Aber nur weil die Klassen in beiden Modulen (EXE/DLL) die gleiche/selbe Deklaration haben, müssen die Instanzen und die RTTI nicht kompatibel sein.

Beispiel:
In der EXE wird auf ein Feld/Methode nicht zugegriffen, also lässt der Compiler das weg und schon ist alles Nachfolgende verschoben.
Die Offsets zu den nachfolgenden Feldern/Variablen/VirtuellenMethoden stimmen nicht mehr überein und die Zugriffe gehen auf falsche Adressen.


Zitat:
Warum sollte das notwendig sein? (Neuerzeugung BPL, wenn Exe sich ändert)
Garnicht.

Da die EXE sich auf die BPL bezieht, braucht man nichts machen, wenn man an der EXE etwas ändert.
Ändert sich was an der BPL, dann muß man auch nicht sofort die EXE neu kompilieren, solange sich keine öffentlichen/geteilten Schnittstellen ändern.
Und wenn sich Schnittstellen ändern,dann muß man sowohl EXE, als auch BPL neu kompileren, aber mit dem Unterschied, daß bei der BPL ein Fehler geworfen wird, sobald die Schnittstellen nich zusammenpassen, was bei der DLL nicht passiert und man sich somit mit der DLL schöne Laufzeitfehler einfangen kann.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (12. Okt 2014 um 13:28 Uhr)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.880 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: DLL wegen RTTI zu einem Package umbauen

  Alt 12. Okt 2014, 13:21
Warum sollte das notwendig sein? (Neuerzeugung BPL, wenn Exe sich ändert)
Markus Kinzler
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.441 Beiträge
 
Delphi 2007 Professional
 
#10

AW: DLL wegen RTTI zu einem Package umbauen

  Alt 12. Okt 2014, 13:28
Warum sollte das notwendig sein? (Neuerzeugung BPL, wenn Exe sich ändert)
Weil ich es so rausgelesen haben prinzipielle....
Zitat:
When you want to update your DLL (change some function's implementation), you simply compile it, export some new routines and ship the new version. All the applications using this DLL will still work (unless, of course, you've removed existing exported routines). On the other hand, when updating a package, you cannot ship a new version of that package without also updating the executable
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 22: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