![]() |
Klasse mit "class var" an DLL übergeben
Hallo,
mein Problem ist folgendes, wenn ich eine Klasse an eine DLL übergebe und anschließend auf eine class var zugreife stimmt der Wert in der class var nicht. (Ist ja auch logisch, da executable/lib beide die class var in ihrem Data-Segment speichern) Beispiel: Deklaration der Klasse:
Delphi-Quellcode:
Library:
type
TFoobar = class class var Foo: Integer; procedure Bar(I: Integer); end; TFoobarProc = procedure (MainModule: TFoobar); procedure TFoobar.Bar(I: Integer); begin writeln(I); end;
Delphi-Quellcode:
procedure Init(MainModule: TFoobar);
begin MainModule.Bar(MainModule.Foo); end; exports Init; Executable
Delphi-Quellcode:
Ausgabe:
var
aFoobar: TFoobar; begin aFoobar := TFoobar.Create; aFoobar.Foo := 42; aFoobar.Bar(aFoobar.Foo); TFoobarProc(GetProcAddress(LoadLibrary('lib.dll'), 'Init'))(aFoobar); readln; end. Zitat:
Kennt einer eine Möglichkeit dies umzusetzen? Gruß, Win32 |
Re: Klasse mit "class var" an DLL übergeben
Keine Klasse im interface benutzen, sondern "flachklopfen" (Methoden als Prozeduren/Funktionen im Interface + Getter/Setter für Eigenschaften; Klasse auf der anderen seite wieder zusammensetzen) oder Interfaces verwenden
|
Re: Klasse mit "class var" an DLL übergeben
du könntes dir eine Funktion anlegen, als Virtual kennzeichnen und über diese die Class-Vars abfragen ... durch das Virtual sollte immer nur die Funktion des Modules (EXE/DLL) aufgerufen werden, in welchem das Objekt erstellt wurde ... hoff ich mal :nerd:
|
Re: Klasse mit "class var" an DLL übergeben
Zitat:
Zitat:
Auf sowas muss man erstmal kommen, tausend dank! :dp: --Win32 |
Re: Klasse mit "class var" an DLL übergeben
:angel: aber gut, daß ich daruf auch noch hingewiesen wurde ... bei der (schrittweisen) Umstellung meines himXML auf Interfaces hatte ich auch mit einer Modulübergreifenden Object-Verion experimentiert, also auf das Problem mit den Class-Vars wär ich bestimmt auch bald gestoßen -.-°
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:56 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