Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

AW: Information dynamisch aus DLL (about-box)

  Alt 6. Jun 2017, 12:26
RTTI hast du auch (TypInfo.pas)
Die "erweiterte" RTTI wurde später hinzugefügt.

Aber nicht du sollst die RTTI nutzen, sondern Klassen nutzen sie zur Speicherverwaltung. DLL und EXE haben je ihre eigene RTTI (wenn man nicht mit Laufzeitpackages kompiliert), was schnell schief gehen kann.
TObject der DLL ist ein "Anderes", als das der EXE. Mit Runtime-Packages liegt die "gemeinsame" RTTI der Klasse dann in den gemeinsam genutzten Packages (TObject liegt da in der RTLxxx.bpl)
Wenn in der EXE oder DLL die Codeoptimierung z.B. unbenutzte Felder/Methoden entfernt, dann stimmen die Speichergrößen/-positionen nicht überein und es knallt schnell mal.

Darum geben keine Objekte mit DLLs sharen.
Und bei Strings oder dynamischen Array muß man auch erst einen Shared-Memory-Manager einbinden, da DLL und EXE sonst jetzt ihren eigenen Speichermanager besitzen und es knallt, wenn der falsche Manager dann den fremden Speicher versucht zu verwalten.
$2B or not $2B

Geändert von himitsu ( 6. Jun 2017 um 14:02 Uhr)
  Mit Zitat antworten Zitat