![]() |
Typecast in DLL
Hi,
ich rufe eine Prozedur in einer Dll auf und übergebe ihr als Parameter eine ObjectList. Ich weiß, dass z.B. Item 1 der Liste ein TCustomForm ist, und ich möchte die Beschriftung auslesen. Warum klappt der folgende Typecast nicht?
Code:
Vielen Dank für Antworten!
procedure GetCaption(ObjectList: TObjectList);
var s: string; begin s := (ObjectList[1] as TCustomForm).Caption; end; |
Re: Typecast in DLL
Zitat:
Der as-Operator funktioniert in diesem Falle nicht. |
Re: Typecast in DLL
Danke schon mal für die Antwort.
1., nur interessensmäßig, warum ist TCustomForm (exe) <> TCustomForm (dll)? 2. Wie funktioniert das mit den Packages, damit ich doch den Typecast durchführen kann? Gibt es noch andere Möglichkeiten, von der Dll aus auf mein Objekt zugreifen zu können? |
Re: Typecast in DLL
Zitat:
Du magst als Entwickler zwar wissen, dass die beiden Versionen der Klasse mit gleichen Namen identisch sind - aber was ist, wenn unterschiedliche Delphi-Versionen verwendet wurden, deren Klassenlayout sich unterscheidet... (edit: zudem gibt es bei globalen (statischen) Variablen der Klasse diverse Probleme, da es sie ja doppelt gibt...) Zitat:
'Sauber' löst man das Problem durch Deklaration von Interfaces zum Zugriff auf die Objekte, welche von beiden benutzt werden (was aber ziemlich aufwendig werden kann). |
Re: Typecast in DLL
Zitat:
Zitat:
Zitat:
Für die Klasse TCustomForm gibt es bereits ein Package: vcl. |
Re: Typecast in DLL
Danke für die ausführlichen Informationen!
Langsam scheine ich doch irgendwie hinter die Sache zu steigen... Das Konzept mit den Packages war mir bisher nicht bekannt, aber aufgrund Eurer Verweise habe ich mich jetzt darin etwas eingelesen und freue mich über die Möglichkeiten die sich (nun auch mir) durch die Packages bieten. Vielen Dank nochmal... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:24 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 by Thomas Breitkreuz