Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

AW: DLL erstelt mit D10.4 Community, Aufruf in D2006 Zugriffsverletzung

  Alt 21. Apr 2022, 16:56
Also im Prinzip darfst du keine Objekte übergeben,
aber du kannst den Objekten ein Interface verpassen und das übergeben.

Selbst wenn die Objekte intern gleich wären,
alleine TObjekt (die Grundklasse für ALLES) ist zwischen 2006 und 10.4 schon in großen Teilen verändert.

Und auch Strings und teilweise die dymaischen Arrays wurden 2009 grundlegend umgebaut. (funktionell wurde nachher zwar wieder einiges Rückgebaut, aber strukturell immernoch unterschiedlich)


Aber selbst z.B. Delphi 2006 und 2007, welche nicht nur fast überall "identische" Klatten, sondern sogar den selben Compiler hatten und somit praktisch nahezu 100% kompatibel sind,
da sind TItgendwas der EXE und TIrgendwas der DLL komplett unterschiedlich, da jeder seine eigene RTTI hat, dazu kommt dann noch der jeweil eigene Speichermanager (den Teil könnte man über ShareMem umgehen) und eben auch jeder eigene Variablen für globale Objekte.
Hier also von den verwendeten globalen Font/Pen/Brush jeder seine eigene Instanz.






Oder hier eben das interne HBITMAP übergeben und drüben direkt damit arbeiten, bzw. einem anderen TBitmap dieses HBITMAP unterschieben, so dass beide Seiten mit dem Selben arbeiten.

Bei TStream gäbe es z.B. ein IStream im Windows, was aber leider nicht mit dem TStream von Delphi kompatibel ist, womit man TStream nicht direkt als IStream weitergeben kann, sondern erst umkopieren muß.
Oder eben den Speicher der Pixel oder die Bytes des Stream (SaveToStream) als Buffer übergeben und drüben wieder in ein anderes TBitmap einlesen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat