AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi DLL erstelt mit D10.4 Community, Aufruf in D2006 Zugriffsverletzung

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

Ein Thema von Michael Habbe · begonnen am 21. Apr 2022 · letzter Beitrag vom 21. Apr 2022
Antwort Antwort
Benutzerbild von Uwe Raabe
Uwe Raabe

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

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

  Alt 21. Apr 2022, 12:45
Das Problem wird sein, dass die DLL eine TBitmap gemäß der Deklaration in Delphi 10.4 erwartet, dein Programm aber eine TBitmap gemäß der Deklaration in Delphi 2006 liefert.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

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

  Alt 21. Apr 2022, 13:31
Nicht nur, dass das TBitmap anders aufgebaut sein kann (unterschedliche Delphi-versionen), die DLL verwendet auch ihren eigenen Speichermanager und ihre eigenen globalen Instanzen (Font/Brush/Pen/...), was auf der anderen Seite garnicht funktioniert kann.

Du könntest maximal ein MSDN-Library durchsuchenHBITMAP verwenden, wo dann die WinAPI den gemeinsamen Grundstock bereitstellt.
Oder nur den Inhalt (Pixelspeicher) des Bitmaps übergeben/kopieren.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (21. Apr 2022 um 13:33 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Michael Habbe
Michael Habbe

Registriert seit: 10. Aug 2005
264 Beiträge
 
Turbo Delphi für Win32
 
#3

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

  Alt 21. Apr 2022, 14:26
Alles klar. Danke erstmal.

Überlege gerade, die Größe in Width und Height sowie die Pixels als Array zu übertragen.

Melde mich wieder....

Danke
Michael
  Mit Zitat antworten Zitat
hoika

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

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

  Alt 21. Apr 2022, 16:06
Hallo,
ich würde der Dll einen Dateinamen mit übergeben,
wohin die Dll das Bitmap speichern soll.
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

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.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
ol1uw

Registriert seit: 24. Jul 2004
Ort: Freiberg
70 Beiträge
 
Delphi 11 Alexandria
 
#6

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

  Alt 21. Apr 2022, 17:53
Hallo

wenn es nicht primär darum geht genau diese Komponente in einer DLL zu verwenden.
Es gibt ja durchaus alternativen z.B. DelphiZXingQRCodeEx.

Uwe
  Mit Zitat antworten Zitat
Antwort Antwort

 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 13:31 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