![]() |
Auslesen von Eigenschaften (published und public) Problem
Hallo,
ich benötige Eure Hilfe zu folgender Problemstellung: Wir haben mehrere Delphi-Anwendungen (mit 3rd Party Komponenten) die um automatisierte Tests durchzuführen ausgelesen/gesteuert werden müssen. Es gibt mehrere Vorgehensweisen.
Ich hoffe, das einige Spezialisten wie Hagen, Andreas, Nico, Olli oder Daniel das hier lesen und vielleicht helfen können. :stupid: (Ich weiß, es gibt hier noch mehr Spezialisten, nicht böse sein, weil ich hier nur 5 angegeben habe.) Ich freue mich natürlich über jede konstruktive Antwort. :thumb: Vielen Dank im Voraus |
Re: Auslesen von Eigenschaften (published und public) Proble
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
|
Re: Auslesen von Eigenschaften (published und public) Proble
Hallo Andreas,
Danke für Deine Antwort. Zitat:
Zitat:
[edit] Ich habe gerade mal auf seinen Blog geschaut, und siehe da, der erste Beitrag ist sein Artikel aus dem Delphi Magazin (Nov 2000) der sich genau damit beschäftigt. -> ich muss mal lesen, ob ich das gebauchen kann. Link: ![]() [/edit] Zitat:
Ziel ist es ja, das Dll und Applikation denselben verwenden im selben Adressraum. (s.u.) Zitat:
Da die dll und die Applikation jeweils eine eigene Instanz, der RTL / VCL im Speicher haben, kann man leider auch den "is"-Operator nicht verwenden.
Delphi-Quellcode:
Aus diesem Grund wird der Vergleich mit der Eigenschaft ClassName vorgenommen. (Also dem String)
if ObjInApp is TClassInDll then ; // ist immer False, da sie nicht auf den gleichen Speicherbereich zeigen
Dann wird das Objekt gecastet.
Delphi-Quellcode:
Und genau hier kommt das Problem mit den 2 unterschiedlichen MemoryManagern zum Tragen.
...
if ObjVonApp.ClassName = 'TClassVonDll' then myObjVonApp := TClassVonDll(ObjVonApp); ... Der Zugriff auf die gecasteten Komponenten ist nicht immer möglich, sondern nur, wenn sie Eigenschaften direkt auf eine Variable verweisen oder die Getter-Methoden statisch (nicht virtuell) sind.
Delphi-Quellcode:
Das liegt daran, das die statischen Methoden im von der Dll zugreifbaren Adressbereich der Applikation liegen, aber die virtuellen in einem Bereich, auf den die dll wegen des eigenen MemoryManagers nicht zugreifen kann.
…
private FGut: string; FAuchGut: string; function GetAuchGut: string; function GetNichtGut: string; virtual; … published property Gut: string; read FGut write SetGut; property AuchGut: string; read GetAuchGut; property NichtGut: string; read GetNichtGut; … Wie würdest Du das Problem lösen? Zitat:
In einer Anwendung, die gegen Package kompiliert wurde, kann das Package leicht geladen und Klassen benutzt werden. Wird die Anwendung allerdings ohne Package kompiliert, so kann mit LoadPackage zwar das Package geladen werden, aber das Benutzen funktioniert nicht mehr so richtig. |
Re: Auslesen von Eigenschaften (published und public) Proble
Zitat:
|
AW: Auslesen von Eigenschaften (published und public) Problem
Hallo,
ich bin gerade dabei meine Offenen Fragen zu bearbeiten. Die Fragen sind zwar immer noch offen, aber das Thema ist für mich mitlerweile obsolet. Aus diesem Grund markiere ich das Thema als beantwortet. :stupid: Viele Grüße MaBuSE |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:00 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