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 3 von 4     123 4      
Benutzerbild von Sir Rufo
Sir Rufo

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

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.426 Beiträge
 
Delphi 2007 Professional
 
#22

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
mkinzler
(Moderator)

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

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
Benutzerbild von himitsu
himitsu

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

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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

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

Registriert seit: 14. Aug 2004
1.426 Beiträge
 
Delphi 2007 Professional
 
#25

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
mkinzler
(Moderator)

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

AW: DLL wegen RTTI zu einem Package umbauen

  Alt 12. Okt 2014, 13:36
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
Das hat nicht mit Dll/Bpl zu tun, sondern mit den Abhängigkeiten, welche man durch den Austausch von Objekten eingeht. Das Problem, das hier angesprochen wird hat auch nicht mit Änderungen der Dll sondern mit Änderungen der Standard-Bpls (VCL/RTL) und den Änderungen des Compilers zu tun. Beschränkt man sich auf einfache/eigene Objekte sollte eine Bpl genauso problemlos wie Dlls unabhängig von Exe entwickelt werden können.
Markus Kinzler
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.426 Beiträge
 
Delphi 2007 Professional
 
#27

AW: DLL wegen RTTI zu einem Package umbauen

  Alt 12. Okt 2014, 13:41
Ok Danke

Dann werde ich das morgen mal probieren, ob es in meinem Fall so funktioniert wie ich es mir wünsche ...

[edit]Würde das dann auch funktionieren, wenn mit dem SELBEN Compiler auf zwei verchiedenen Rechner das ganze mache?
Also auf einem REchner spriche einem Delphi 2007 erzeuge ich die EXE und auf einem anderen Rechner auch mit Delphi 2007 dann die BPL dazu?
Oder würde es da dann krachen?[/edit]
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

AW: DLL wegen RTTI zu einem Package umbauen

  Alt 12. Okt 2014, 13:47
Ja funktioniert. Mit verschieden Compiler meinte ich verschiedene Delphiversionen.
Wenn auf den 2 Rechner die selbe Version (inkl. Patchstand) installiert ist, funktioniert das. Sonst würden die ganzen 3rd-Party Komponenten/Plugins, welche nur als Bpl kommen auch nicht funkionieren.
Markus Kinzler
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.426 Beiträge
 
Delphi 2007 Professional
 
#29

AW: DLL wegen RTTI zu einem Package umbauen

  Alt 12. Okt 2014, 15:26
Ok danke

So hab noch mal einiges gelesen ....

Also wenn ich meine BPL schreibe, und ich WILL ja KEINE NEUE EXE machen müssen wenn ich die BPL aktualisiere.

Darf ich nichts in der interface section ändern, also alle Änderungen in der implemenation Section sind tabu

Stimmt das so? Oder darf ich gewisse änderungen in der interface section machen?
zB.: private variablen in eine Klasse hinzufügen oder gewissen funktionen/procedure dazu?

Also welche Änderungen darf ich in einer unit machen ohne das sich die Version der Package ändert?

Was passiert mit units die ich per uses in die BPL einbinde?
Hat dazu noch wer interne infos?
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

AW: DLL wegen RTTI zu einem Package umbauen

  Alt 12. Okt 2014, 15:39
Zitat:
Darf ich nichts in der interface section ändern, also alle Änderungen in der implemenation Section sind tabu
Was hat die implementation Section mit dem Interface zu tun?
Dort darfst Du so viel verändern wie Du willst.
Im Interface darfst Du nichts entfernen oder funktional verändern; erweitern kannst Du.

Eine Bpl ist eine Dll, mit der zusätzlichen Möglichkeit komplexere (Objekt-)typen im Interface zu verwenden.
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


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 09:48 Uhr.
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